package ms.unicorn.language.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import ms.unicorn.language.services.UnicornLanguageDefinitionGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalUnicornLanguageDefinitionParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'library'", "'namespace'", "'{'", "'}'", "'language'", "'text'", "'='", "'extension'", "'('", "'model'", "':'", "'diagram'", "')'", "'smallimage'", "'largeimage'", "'include'", "'import'", "'toolbox'", "'end'", "'group'", "'label'", "'tool'", "'tooltip'", "'element'", "'view'", "'['", "','", "']'", "'fields'", "'properties'", "'int'", "'string'", "'boolean'", "'date'", "'float'", "'@'", "'entity'", "'extends'", "'figure'", "'helper'", "'relation'", "'policies'", "'node'", "'editpart'", "'add'", "'view_field'", "'view_pattern'", "'edit_field'", "'edit_pattern'", "'compartment'", "'connector'", "'style'", "'constraint'", "'forbidden'", "'to'", "'validator'", "'connectionstyle'", "'width'", "'color'", "'decorator'", "'class'", "'locator'", "'layout'", "'policy'", "'top'", "'left'", "'right'", "'bottom'", "'none'", "'new'", "'.*'", "'+='", "'||'", "'&&'", "'=='", "'!='", "'instanceof'", "'>='", "'<='", "'>'", "'<'", "'->'", "'..'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'as'", "'.'", "'?.'", "'*.'", "'|'", "'if'", "'else'", "'switch'", "'default'", "'case'", "'for'", "'while'", "'do'", "';'", "'var'", "'val'", "'super'", "'::'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'catch'", "'=>'", "'?'", "'&'", "'visile'", "'editable'", "'multiline'", "'description'", "'category'", "'notify'", "'min'", "'max'", "'primary'", "'resizable'", "'dock'", "'anchor'", "'location'", "'size'", "'margin'", "'position'", "'bound'", "'solid'", "'dash'", "'dot'", "'dashdot'", "'dashdotdot'", "'fill'", "'source'", "'target'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__93=93;
    public static final int T__19=19;
    public static final int T__94=94;
    public static final int T__91=91;
    public static final int T__92=92;
    public static final int T__148=148;
    public static final int T__16=16;
    public static final int T__147=147;
    public static final int T__15=15;
    public static final int T__90=90;
    public static final int T__18=18;
    public static final int T__149=149;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int T__154=154;
    public static final int T__155=155;
    public static final int T__99=99;
    public static final int T__150=150;
    public static final int T__98=98;
    public static final int T__151=151;
    public static final int T__97=97;
    public static final int T__152=152;
    public static final int T__96=96;
    public static final int T__153=153;
    public static final int T__95=95;
    public static final int T__139=139;
    public static final int T__138=138;
    public static final int T__137=137;
    public static final int T__136=136;
    public static final int T__80=80;
    public static final int T__81=81;
    public static final int T__82=82;
    public static final int T__83=83;
    public static final int T__141=141;
    public static final int T__85=85;
    public static final int T__142=142;
    public static final int T__84=84;
    public static final int T__87=87;
    public static final int T__140=140;
    public static final int T__86=86;
    public static final int T__145=145;
    public static final int T__89=89;
    public static final int T__146=146;
    public static final int T__88=88;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__143=143;
    public static final int T__144=144;
    public static final int T__126=126;
    public static final int T__125=125;
    public static final int T__128=128;
    public static final int RULE_STRING=4;
    public static final int T__127=127;
    public static final int T__71=71;
    public static final int T__129=129;
    public static final int T__72=72;
    public static final int T__70=70;
    public static final int T__76=76;
    public static final int T__75=75;
    public static final int T__130=130;
    public static final int T__74=74;
    public static final int T__131=131;
    public static final int T__73=73;
    public static final int T__132=132;
    public static final int T__133=133;
    public static final int T__79=79;
    public static final int T__134=134;
    public static final int T__78=78;
    public static final int T__135=135;
    public static final int T__77=77;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__66=66;
    public static final int T__67=67;
    public static final int T__64=64;
    public static final int T__65=65;
    public static final int T__62=62;
    public static final int T__63=63;
    public static final int T__118=118;
    public static final int T__119=119;
    public static final int T__116=116;
    public static final int T__117=117;
    public static final int T__114=114;
    public static final int T__115=115;
    public static final int T__124=124;
    public static final int T__123=123;
    public static final int T__122=122;
    public static final int T__121=121;
    public static final int T__120=120;
    public static final int T__61=61;
    public static final int T__60=60;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__107=107;
    public static final int T__108=108;
    public static final int T__109=109;
    public static final int T__103=103;
    public static final int T__59=59;
    public static final int T__104=104;
    public static final int T__105=105;
    public static final int T__106=106;
    public static final int T__111=111;
    public static final int T__110=110;
    public static final int RULE_INT=6;
    public static final int T__113=113;
    public static final int T__112=112;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int T__102=102;
    public static final int T__101=101;
    public static final int T__100=100;
    public static final int RULE_SL_COMMENT=8;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalUnicornLanguageDefinitionParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalUnicornLanguageDefinitionParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalUnicornLanguageDefinitionParser.tokenNames; }
    public String getGrammarFileName() { return "../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g"; }



     	private UnicornLanguageDefinitionGrammarAccess grammarAccess;
     	
        public InternalUnicornLanguageDefinitionParser(TokenStream input, UnicornLanguageDefinitionGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Module";	
       	}
       	
       	@Override
       	protected UnicornLanguageDefinitionGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModule"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:68:1: entryRuleModule returns [EObject current=null] : iv_ruleModule= ruleModule EOF ;
    public final EObject entryRuleModule() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModule = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:69:2: (iv_ruleModule= ruleModule EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:70:2: iv_ruleModule= ruleModule EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getModuleRule()); 
            }
            pushFollow(FOLLOW_ruleModule_in_entryRuleModule75);
            iv_ruleModule=ruleModule();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleModule; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleModule85); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModule"


    // $ANTLR start "ruleModule"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:77:1: ruleModule returns [EObject current=null] : (this_LanguageDef_0= ruleLanguageDef | this_Library_1= ruleLibrary ) ;
    public final EObject ruleModule() throws RecognitionException {
        EObject current = null;

        EObject this_LanguageDef_0 = null;

        EObject this_Library_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:80:28: ( (this_LanguageDef_0= ruleLanguageDef | this_Library_1= ruleLibrary ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:81:1: (this_LanguageDef_0= ruleLanguageDef | this_Library_1= ruleLibrary )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:81:1: (this_LanguageDef_0= ruleLanguageDef | this_Library_1= ruleLibrary )
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==15) ) {
                alt1=1;
            }
            else if ( (LA1_0==11) ) {
                alt1=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;
            }
            switch (alt1) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:82:5: this_LanguageDef_0= ruleLanguageDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getModuleAccess().getLanguageDefParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleLanguageDef_in_ruleModule132);
                    this_LanguageDef_0=ruleLanguageDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LanguageDef_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:92:5: this_Library_1= ruleLibrary
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getModuleAccess().getLibraryParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleLibrary_in_ruleModule159);
                    this_Library_1=ruleLibrary();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Library_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModule"


    // $ANTLR start "entryRuleLibrary"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:108:1: entryRuleLibrary returns [EObject current=null] : iv_ruleLibrary= ruleLibrary EOF ;
    public final EObject entryRuleLibrary() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLibrary = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:109:2: (iv_ruleLibrary= ruleLibrary EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:110:2: iv_ruleLibrary= ruleLibrary EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLibraryRule()); 
            }
            pushFollow(FOLLOW_ruleLibrary_in_entryRuleLibrary194);
            iv_ruleLibrary=ruleLibrary();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLibrary; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleLibrary204); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLibrary"


    // $ANTLR start "ruleLibrary"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:117:1: ruleLibrary returns [EObject current=null] : (otherlv_0= 'library' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_parents_2_0= ruleParentLanguages ) )* ( (lv_imports_3_0= ruleImportStatement ) )* ( ( (lv_items_4_0= ruleModuleItem ) ) | ( (lv_vars_5_0= ruleXVariableDeclaration ) ) )* ) ;
    public final EObject ruleLibrary() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_parents_2_0 = null;

        EObject lv_imports_3_0 = null;

        EObject lv_items_4_0 = null;

        EObject lv_vars_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:120:28: ( (otherlv_0= 'library' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_parents_2_0= ruleParentLanguages ) )* ( (lv_imports_3_0= ruleImportStatement ) )* ( ( (lv_items_4_0= ruleModuleItem ) ) | ( (lv_vars_5_0= ruleXVariableDeclaration ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:121:1: (otherlv_0= 'library' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_parents_2_0= ruleParentLanguages ) )* ( (lv_imports_3_0= ruleImportStatement ) )* ( ( (lv_items_4_0= ruleModuleItem ) ) | ( (lv_vars_5_0= ruleXVariableDeclaration ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:121:1: (otherlv_0= 'library' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_parents_2_0= ruleParentLanguages ) )* ( (lv_imports_3_0= ruleImportStatement ) )* ( ( (lv_items_4_0= ruleModuleItem ) ) | ( (lv_vars_5_0= ruleXVariableDeclaration ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:121:3: otherlv_0= 'library' ( (lv_name_1_0= ruleQualifiedName ) ) ( (lv_parents_2_0= ruleParentLanguages ) )* ( (lv_imports_3_0= ruleImportStatement ) )* ( ( (lv_items_4_0= ruleModuleItem ) ) | ( (lv_vars_5_0= ruleXVariableDeclaration ) ) )*
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleLibrary241); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getLibraryAccess().getLibraryKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:125:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:126:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:126:1: (lv_name_1_0= ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:127:3: lv_name_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLibraryAccess().getNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleLibrary262);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLibraryRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:143:2: ( (lv_parents_2_0= ruleParentLanguages ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==26) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:144:1: (lv_parents_2_0= ruleParentLanguages )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:144:1: (lv_parents_2_0= ruleParentLanguages )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:145:3: lv_parents_2_0= ruleParentLanguages
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLibraryAccess().getParentsParentLanguagesParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleParentLanguages_in_ruleLibrary283);
            	    lv_parents_2_0=ruleParentLanguages();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLibraryRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"parents",
            	              		lv_parents_2_0, 
            	              		"ParentLanguages");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:161:3: ( (lv_imports_3_0= ruleImportStatement ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==27) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:162:1: (lv_imports_3_0= ruleImportStatement )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:162:1: (lv_imports_3_0= ruleImportStatement )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:163:3: lv_imports_3_0= ruleImportStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLibraryAccess().getImportsImportStatementParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleImportStatement_in_ruleLibrary305);
            	    lv_imports_3_0=ruleImportStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLibraryRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"imports",
            	              		lv_imports_3_0, 
            	              		"ImportStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:179:3: ( ( (lv_items_4_0= ruleModuleItem ) ) | ( (lv_vars_5_0= ruleXVariableDeclaration ) ) )*
            loop4:
            do {
                int alt4=3;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==12||(LA4_0>=30 && LA4_0<=34)||LA4_0==47||LA4_0==49||LA4_0==51||LA4_0==53||(LA4_0>=60 && LA4_0<=61)||(LA4_0>=66 && LA4_0<=67)||(LA4_0>=69 && LA4_0<=70)||(LA4_0>=72 && LA4_0<=74)) ) {
                    alt4=1;
                }
                else if ( ((LA4_0>=115 && LA4_0<=116)) ) {
                    alt4=2;
                }


                switch (alt4) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:179:4: ( (lv_items_4_0= ruleModuleItem ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:179:4: ( (lv_items_4_0= ruleModuleItem ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:180:1: (lv_items_4_0= ruleModuleItem )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:180:1: (lv_items_4_0= ruleModuleItem )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:181:3: lv_items_4_0= ruleModuleItem
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLibraryAccess().getItemsModuleItemParserRuleCall_4_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleModuleItem_in_ruleLibrary328);
            	    lv_items_4_0=ruleModuleItem();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLibraryRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"items",
            	              		lv_items_4_0, 
            	              		"ModuleItem");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:198:6: ( (lv_vars_5_0= ruleXVariableDeclaration ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:198:6: ( (lv_vars_5_0= ruleXVariableDeclaration ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:199:1: (lv_vars_5_0= ruleXVariableDeclaration )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:199:1: (lv_vars_5_0= ruleXVariableDeclaration )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:200:3: lv_vars_5_0= ruleXVariableDeclaration
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLibraryAccess().getVarsXVariableDeclarationParserRuleCall_4_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXVariableDeclaration_in_ruleLibrary355);
            	    lv_vars_5_0=ruleXVariableDeclaration();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLibraryRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"vars",
            	              		lv_vars_5_0, 
            	              		"XVariableDeclaration");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLibrary"


    // $ANTLR start "entryRuleModuleItem"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:224:1: entryRuleModuleItem returns [EObject current=null] : iv_ruleModuleItem= ruleModuleItem EOF ;
    public final EObject entryRuleModuleItem() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModuleItem = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:225:2: (iv_ruleModuleItem= ruleModuleItem EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:226:2: iv_ruleModuleItem= ruleModuleItem EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getModuleItemRule()); 
            }
            pushFollow(FOLLOW_ruleModuleItem_in_entryRuleModuleItem393);
            iv_ruleModuleItem=ruleModuleItem();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleModuleItem; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleModuleItem403); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModuleItem"


    // $ANTLR start "ruleModuleItem"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:233:1: ruleModuleItem returns [EObject current=null] : (this_ExpressionableModuleItem_0= ruleExpressionableModuleItem | this_NonExpressionModuleItem_1= ruleNonExpressionModuleItem ) ;
    public final EObject ruleModuleItem() throws RecognitionException {
        EObject current = null;

        EObject this_ExpressionableModuleItem_0 = null;

        EObject this_NonExpressionModuleItem_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:236:28: ( (this_ExpressionableModuleItem_0= ruleExpressionableModuleItem | this_NonExpressionModuleItem_1= ruleNonExpressionModuleItem ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:237:1: (this_ExpressionableModuleItem_0= ruleExpressionableModuleItem | this_NonExpressionModuleItem_1= ruleNonExpressionModuleItem )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:237:1: (this_ExpressionableModuleItem_0= ruleExpressionableModuleItem | this_NonExpressionModuleItem_1= ruleNonExpressionModuleItem )
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==69) ) {
                alt5=1;
            }
            else if ( (LA5_0==12||(LA5_0>=30 && LA5_0<=34)||LA5_0==47||LA5_0==49||LA5_0==51||LA5_0==53||(LA5_0>=60 && LA5_0<=61)||(LA5_0>=66 && LA5_0<=67)||LA5_0==70||(LA5_0>=72 && LA5_0<=74)) ) {
                alt5=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }
            switch (alt5) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:238:5: this_ExpressionableModuleItem_0= ruleExpressionableModuleItem
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getModuleItemAccess().getExpressionableModuleItemParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleExpressionableModuleItem_in_ruleModuleItem450);
                    this_ExpressionableModuleItem_0=ruleExpressionableModuleItem();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ExpressionableModuleItem_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:248:5: this_NonExpressionModuleItem_1= ruleNonExpressionModuleItem
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getModuleItemAccess().getNonExpressionModuleItemParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNonExpressionModuleItem_in_ruleModuleItem477);
                    this_NonExpressionModuleItem_1=ruleNonExpressionModuleItem();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NonExpressionModuleItem_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModuleItem"


    // $ANTLR start "entryRuleExpressionableModuleItem"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:264:1: entryRuleExpressionableModuleItem returns [EObject current=null] : iv_ruleExpressionableModuleItem= ruleExpressionableModuleItem EOF ;
    public final EObject entryRuleExpressionableModuleItem() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExpressionableModuleItem = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:265:2: (iv_ruleExpressionableModuleItem= ruleExpressionableModuleItem EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:266:2: iv_ruleExpressionableModuleItem= ruleExpressionableModuleItem EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExpressionableModuleItemRule()); 
            }
            pushFollow(FOLLOW_ruleExpressionableModuleItem_in_entryRuleExpressionableModuleItem512);
            iv_ruleExpressionableModuleItem=ruleExpressionableModuleItem();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExpressionableModuleItem; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExpressionableModuleItem522); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExpressionableModuleItem"


    // $ANTLR start "ruleExpressionableModuleItem"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:273:1: ruleExpressionableModuleItem returns [EObject current=null] : this_ColorDef_0= ruleColorDef ;
    public final EObject ruleExpressionableModuleItem() throws RecognitionException {
        EObject current = null;

        EObject this_ColorDef_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:276:28: (this_ColorDef_0= ruleColorDef )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:278:5: this_ColorDef_0= ruleColorDef
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getExpressionableModuleItemAccess().getColorDefParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleColorDef_in_ruleExpressionableModuleItem568);
            this_ColorDef_0=ruleColorDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ColorDef_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExpressionableModuleItem"


    // $ANTLR start "entryRuleNonExpressionModuleItem"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:294:1: entryRuleNonExpressionModuleItem returns [EObject current=null] : iv_ruleNonExpressionModuleItem= ruleNonExpressionModuleItem EOF ;
    public final EObject entryRuleNonExpressionModuleItem() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNonExpressionModuleItem = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:295:2: (iv_ruleNonExpressionModuleItem= ruleNonExpressionModuleItem EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:296:2: iv_ruleNonExpressionModuleItem= ruleNonExpressionModuleItem EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNonExpressionModuleItemRule()); 
            }
            pushFollow(FOLLOW_ruleNonExpressionModuleItem_in_entryRuleNonExpressionModuleItem602);
            iv_ruleNonExpressionModuleItem=ruleNonExpressionModuleItem();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNonExpressionModuleItem; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNonExpressionModuleItem612); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNonExpressionModuleItem"


    // $ANTLR start "ruleNonExpressionModuleItem"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:303:1: ruleNonExpressionModuleItem returns [EObject current=null] : (this_Namespace_0= ruleNamespace | this_ToolGroup_1= ruleToolGroup | this_ToolItem_2= ruleToolItem | this_ElementDef_3= ruleElementDef | this_FigureDef_4= ruleFigureDef | this_DecoratorDef_5= ruleDecoratorDef | this_ConnectionStyleDef_6= ruleConnectionStyleDef | this_PolicyDef_7= rulePolicyDef | this_ValidatorDef_8= ruleValidatorDef | this_DecoratorLocatorDef_9= ruleDecoratorLocatorDef | this_ViewDef_10= ruleViewDef ) ;
    public final EObject ruleNonExpressionModuleItem() throws RecognitionException {
        EObject current = null;

        EObject this_Namespace_0 = null;

        EObject this_ToolGroup_1 = null;

        EObject this_ToolItem_2 = null;

        EObject this_ElementDef_3 = null;

        EObject this_FigureDef_4 = null;

        EObject this_DecoratorDef_5 = null;

        EObject this_ConnectionStyleDef_6 = null;

        EObject this_PolicyDef_7 = null;

        EObject this_ValidatorDef_8 = null;

        EObject this_DecoratorLocatorDef_9 = null;

        EObject this_ViewDef_10 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:306:28: ( (this_Namespace_0= ruleNamespace | this_ToolGroup_1= ruleToolGroup | this_ToolItem_2= ruleToolItem | this_ElementDef_3= ruleElementDef | this_FigureDef_4= ruleFigureDef | this_DecoratorDef_5= ruleDecoratorDef | this_ConnectionStyleDef_6= ruleConnectionStyleDef | this_PolicyDef_7= rulePolicyDef | this_ValidatorDef_8= ruleValidatorDef | this_DecoratorLocatorDef_9= ruleDecoratorLocatorDef | this_ViewDef_10= ruleViewDef ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:307:1: (this_Namespace_0= ruleNamespace | this_ToolGroup_1= ruleToolGroup | this_ToolItem_2= ruleToolItem | this_ElementDef_3= ruleElementDef | this_FigureDef_4= ruleFigureDef | this_DecoratorDef_5= ruleDecoratorDef | this_ConnectionStyleDef_6= ruleConnectionStyleDef | this_PolicyDef_7= rulePolicyDef | this_ValidatorDef_8= ruleValidatorDef | this_DecoratorLocatorDef_9= ruleDecoratorLocatorDef | this_ViewDef_10= ruleViewDef )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:307:1: (this_Namespace_0= ruleNamespace | this_ToolGroup_1= ruleToolGroup | this_ToolItem_2= ruleToolItem | this_ElementDef_3= ruleElementDef | this_FigureDef_4= ruleFigureDef | this_DecoratorDef_5= ruleDecoratorDef | this_ConnectionStyleDef_6= ruleConnectionStyleDef | this_PolicyDef_7= rulePolicyDef | this_ValidatorDef_8= ruleValidatorDef | this_DecoratorLocatorDef_9= ruleDecoratorLocatorDef | this_ViewDef_10= ruleViewDef )
            int alt6=11;
            alt6 = dfa6.predict(input);
            switch (alt6) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:308:5: this_Namespace_0= ruleNamespace
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getNamespaceParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNamespace_in_ruleNonExpressionModuleItem659);
                    this_Namespace_0=ruleNamespace();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Namespace_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:318:5: this_ToolGroup_1= ruleToolGroup
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getToolGroupParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleToolGroup_in_ruleNonExpressionModuleItem686);
                    this_ToolGroup_1=ruleToolGroup();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ToolGroup_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:328:5: this_ToolItem_2= ruleToolItem
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getToolItemParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleToolItem_in_ruleNonExpressionModuleItem713);
                    this_ToolItem_2=ruleToolItem();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ToolItem_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:338:5: this_ElementDef_3= ruleElementDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getElementDefParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleElementDef_in_ruleNonExpressionModuleItem740);
                    this_ElementDef_3=ruleElementDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ElementDef_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:348:5: this_FigureDef_4= ruleFigureDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getFigureDefParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleFigureDef_in_ruleNonExpressionModuleItem767);
                    this_FigureDef_4=ruleFigureDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_FigureDef_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:358:5: this_DecoratorDef_5= ruleDecoratorDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getDecoratorDefParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDecoratorDef_in_ruleNonExpressionModuleItem794);
                    this_DecoratorDef_5=ruleDecoratorDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DecoratorDef_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:368:5: this_ConnectionStyleDef_6= ruleConnectionStyleDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getConnectionStyleDefParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_ruleConnectionStyleDef_in_ruleNonExpressionModuleItem821);
                    this_ConnectionStyleDef_6=ruleConnectionStyleDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ConnectionStyleDef_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:378:5: this_PolicyDef_7= rulePolicyDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getPolicyDefParserRuleCall_7()); 
                          
                    }
                    pushFollow(FOLLOW_rulePolicyDef_in_ruleNonExpressionModuleItem848);
                    this_PolicyDef_7=rulePolicyDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PolicyDef_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 9 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:388:5: this_ValidatorDef_8= ruleValidatorDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getValidatorDefParserRuleCall_8()); 
                          
                    }
                    pushFollow(FOLLOW_ruleValidatorDef_in_ruleNonExpressionModuleItem875);
                    this_ValidatorDef_8=ruleValidatorDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ValidatorDef_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:398:5: this_DecoratorLocatorDef_9= ruleDecoratorLocatorDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getDecoratorLocatorDefParserRuleCall_9()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDecoratorLocatorDef_in_ruleNonExpressionModuleItem902);
                    this_DecoratorLocatorDef_9=ruleDecoratorLocatorDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DecoratorLocatorDef_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 11 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:408:5: this_ViewDef_10= ruleViewDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getNonExpressionModuleItemAccess().getViewDefParserRuleCall_10()); 
                          
                    }
                    pushFollow(FOLLOW_ruleViewDef_in_ruleNonExpressionModuleItem929);
                    this_ViewDef_10=ruleViewDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ViewDef_10; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNonExpressionModuleItem"


    // $ANTLR start "entryRuleNamespace"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:424:1: entryRuleNamespace returns [EObject current=null] : iv_ruleNamespace= ruleNamespace EOF ;
    public final EObject entryRuleNamespace() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamespace = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:425:2: (iv_ruleNamespace= ruleNamespace EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:426:2: iv_ruleNamespace= ruleNamespace EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamespaceRule()); 
            }
            pushFollow(FOLLOW_ruleNamespace_in_entryRuleNamespace964);
            iv_ruleNamespace=ruleNamespace();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamespace; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamespace974); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamespace"


    // $ANTLR start "ruleNamespace"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:433:1: ruleNamespace returns [EObject current=null] : (otherlv_0= 'namespace' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( ( (lv_items_3_0= ruleModuleItem ) ) | ( (lv_vars_4_0= ruleXVariableDeclaration ) ) )* otherlv_5= '}' ) ;
    public final EObject ruleNamespace() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_items_3_0 = null;

        EObject lv_vars_4_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:436:28: ( (otherlv_0= 'namespace' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( ( (lv_items_3_0= ruleModuleItem ) ) | ( (lv_vars_4_0= ruleXVariableDeclaration ) ) )* otherlv_5= '}' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:437:1: (otherlv_0= 'namespace' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( ( (lv_items_3_0= ruleModuleItem ) ) | ( (lv_vars_4_0= ruleXVariableDeclaration ) ) )* otherlv_5= '}' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:437:1: (otherlv_0= 'namespace' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( ( (lv_items_3_0= ruleModuleItem ) ) | ( (lv_vars_4_0= ruleXVariableDeclaration ) ) )* otherlv_5= '}' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:437:3: otherlv_0= 'namespace' ( (lv_name_1_0= ruleQualifiedName ) ) otherlv_2= '{' ( ( (lv_items_3_0= ruleModuleItem ) ) | ( (lv_vars_4_0= ruleXVariableDeclaration ) ) )* otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,12,FOLLOW_12_in_ruleNamespace1011); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getNamespaceAccess().getNamespaceKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:441:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:442:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:442:1: (lv_name_1_0= ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:443:3: lv_name_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamespaceAccess().getNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleNamespace1032);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamespaceRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,13,FOLLOW_13_in_ruleNamespace1044); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getNamespaceAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:463:1: ( ( (lv_items_3_0= ruleModuleItem ) ) | ( (lv_vars_4_0= ruleXVariableDeclaration ) ) )*
            loop7:
            do {
                int alt7=3;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==12||(LA7_0>=30 && LA7_0<=34)||LA7_0==47||LA7_0==49||LA7_0==51||LA7_0==53||(LA7_0>=60 && LA7_0<=61)||(LA7_0>=66 && LA7_0<=67)||(LA7_0>=69 && LA7_0<=70)||(LA7_0>=72 && LA7_0<=74)) ) {
                    alt7=1;
                }
                else if ( ((LA7_0>=115 && LA7_0<=116)) ) {
                    alt7=2;
                }


                switch (alt7) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:463:2: ( (lv_items_3_0= ruleModuleItem ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:463:2: ( (lv_items_3_0= ruleModuleItem ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:464:1: (lv_items_3_0= ruleModuleItem )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:464:1: (lv_items_3_0= ruleModuleItem )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:465:3: lv_items_3_0= ruleModuleItem
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getNamespaceAccess().getItemsModuleItemParserRuleCall_3_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleModuleItem_in_ruleNamespace1066);
            	    lv_items_3_0=ruleModuleItem();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getNamespaceRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"items",
            	              		lv_items_3_0, 
            	              		"ModuleItem");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:482:6: ( (lv_vars_4_0= ruleXVariableDeclaration ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:482:6: ( (lv_vars_4_0= ruleXVariableDeclaration ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:483:1: (lv_vars_4_0= ruleXVariableDeclaration )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:483:1: (lv_vars_4_0= ruleXVariableDeclaration )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:484:3: lv_vars_4_0= ruleXVariableDeclaration
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getNamespaceAccess().getVarsXVariableDeclarationParserRuleCall_3_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXVariableDeclaration_in_ruleNamespace1093);
            	    lv_vars_4_0=ruleXVariableDeclaration();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getNamespaceRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"vars",
            	              		lv_vars_4_0, 
            	              		"XVariableDeclaration");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            otherlv_5=(Token)match(input,14,FOLLOW_14_in_ruleNamespace1107); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getNamespaceAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamespace"


    // $ANTLR start "entryRuleLanguageDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:512:1: entryRuleLanguageDef returns [EObject current=null] : iv_ruleLanguageDef= ruleLanguageDef EOF ;
    public final EObject entryRuleLanguageDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLanguageDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:513:2: (iv_ruleLanguageDef= ruleLanguageDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:514:2: iv_ruleLanguageDef= ruleLanguageDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLanguageDefRule()); 
            }
            pushFollow(FOLLOW_ruleLanguageDef_in_entryRuleLanguageDef1143);
            iv_ruleLanguageDef=ruleLanguageDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLanguageDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleLanguageDef1153); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLanguageDef"


    // $ANTLR start "ruleLanguageDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:521:1: ruleLanguageDef returns [EObject current=null] : (otherlv_0= 'language' ( ( (lv_name_1_0= ruleQualifiedName ) ) | ( (lv_name_2_0= RULE_STRING ) ) ) (otherlv_3= 'text' otherlv_4= '=' ( (lv_text_5_0= RULE_STRING ) ) )? (otherlv_6= 'extension' otherlv_7= '=' otherlv_8= '(' (otherlv_9= 'model' otherlv_10= ':' ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) ) )? (otherlv_12= 'diagram' otherlv_13= ':' ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) ) )? otherlv_15= ')' )? (otherlv_16= 'smallimage' otherlv_17= '=' ( (lv_smallimage_18_0= RULE_STRING ) ) )? (otherlv_19= 'largeimage' otherlv_20= '=' ( (lv_largeimage_21_0= RULE_STRING ) ) )? ( (lv_parents_22_0= ruleParentLanguages ) )* ( (lv_imports_23_0= ruleImportStatement ) )* ( ( (lv_items_24_0= ruleModuleItem ) ) | ( (lv_vars_25_0= ruleXVariableDeclaration ) ) )* ( (lv_toolbox_26_0= ruleToolBox ) )? ) ;
    public final EObject ruleLanguageDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_text_5_0=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token lv_modelExtension_11_2=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token lv_diagramExtension_14_2=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token lv_smallimage_18_0=null;
        Token otherlv_19=null;
        Token otherlv_20=null;
        Token lv_largeimage_21_0=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        AntlrDatatypeRuleToken lv_modelExtension_11_1 = null;

        AntlrDatatypeRuleToken lv_diagramExtension_14_1 = null;

        EObject lv_parents_22_0 = null;

        EObject lv_imports_23_0 = null;

        EObject lv_items_24_0 = null;

        EObject lv_vars_25_0 = null;

        EObject lv_toolbox_26_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:524:28: ( (otherlv_0= 'language' ( ( (lv_name_1_0= ruleQualifiedName ) ) | ( (lv_name_2_0= RULE_STRING ) ) ) (otherlv_3= 'text' otherlv_4= '=' ( (lv_text_5_0= RULE_STRING ) ) )? (otherlv_6= 'extension' otherlv_7= '=' otherlv_8= '(' (otherlv_9= 'model' otherlv_10= ':' ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) ) )? (otherlv_12= 'diagram' otherlv_13= ':' ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) ) )? otherlv_15= ')' )? (otherlv_16= 'smallimage' otherlv_17= '=' ( (lv_smallimage_18_0= RULE_STRING ) ) )? (otherlv_19= 'largeimage' otherlv_20= '=' ( (lv_largeimage_21_0= RULE_STRING ) ) )? ( (lv_parents_22_0= ruleParentLanguages ) )* ( (lv_imports_23_0= ruleImportStatement ) )* ( ( (lv_items_24_0= ruleModuleItem ) ) | ( (lv_vars_25_0= ruleXVariableDeclaration ) ) )* ( (lv_toolbox_26_0= ruleToolBox ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:525:1: (otherlv_0= 'language' ( ( (lv_name_1_0= ruleQualifiedName ) ) | ( (lv_name_2_0= RULE_STRING ) ) ) (otherlv_3= 'text' otherlv_4= '=' ( (lv_text_5_0= RULE_STRING ) ) )? (otherlv_6= 'extension' otherlv_7= '=' otherlv_8= '(' (otherlv_9= 'model' otherlv_10= ':' ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) ) )? (otherlv_12= 'diagram' otherlv_13= ':' ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) ) )? otherlv_15= ')' )? (otherlv_16= 'smallimage' otherlv_17= '=' ( (lv_smallimage_18_0= RULE_STRING ) ) )? (otherlv_19= 'largeimage' otherlv_20= '=' ( (lv_largeimage_21_0= RULE_STRING ) ) )? ( (lv_parents_22_0= ruleParentLanguages ) )* ( (lv_imports_23_0= ruleImportStatement ) )* ( ( (lv_items_24_0= ruleModuleItem ) ) | ( (lv_vars_25_0= ruleXVariableDeclaration ) ) )* ( (lv_toolbox_26_0= ruleToolBox ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:525:1: (otherlv_0= 'language' ( ( (lv_name_1_0= ruleQualifiedName ) ) | ( (lv_name_2_0= RULE_STRING ) ) ) (otherlv_3= 'text' otherlv_4= '=' ( (lv_text_5_0= RULE_STRING ) ) )? (otherlv_6= 'extension' otherlv_7= '=' otherlv_8= '(' (otherlv_9= 'model' otherlv_10= ':' ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) ) )? (otherlv_12= 'diagram' otherlv_13= ':' ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) ) )? otherlv_15= ')' )? (otherlv_16= 'smallimage' otherlv_17= '=' ( (lv_smallimage_18_0= RULE_STRING ) ) )? (otherlv_19= 'largeimage' otherlv_20= '=' ( (lv_largeimage_21_0= RULE_STRING ) ) )? ( (lv_parents_22_0= ruleParentLanguages ) )* ( (lv_imports_23_0= ruleImportStatement ) )* ( ( (lv_items_24_0= ruleModuleItem ) ) | ( (lv_vars_25_0= ruleXVariableDeclaration ) ) )* ( (lv_toolbox_26_0= ruleToolBox ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:525:3: otherlv_0= 'language' ( ( (lv_name_1_0= ruleQualifiedName ) ) | ( (lv_name_2_0= RULE_STRING ) ) ) (otherlv_3= 'text' otherlv_4= '=' ( (lv_text_5_0= RULE_STRING ) ) )? (otherlv_6= 'extension' otherlv_7= '=' otherlv_8= '(' (otherlv_9= 'model' otherlv_10= ':' ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) ) )? (otherlv_12= 'diagram' otherlv_13= ':' ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) ) )? otherlv_15= ')' )? (otherlv_16= 'smallimage' otherlv_17= '=' ( (lv_smallimage_18_0= RULE_STRING ) ) )? (otherlv_19= 'largeimage' otherlv_20= '=' ( (lv_largeimage_21_0= RULE_STRING ) ) )? ( (lv_parents_22_0= ruleParentLanguages ) )* ( (lv_imports_23_0= ruleImportStatement ) )* ( ( (lv_items_24_0= ruleModuleItem ) ) | ( (lv_vars_25_0= ruleXVariableDeclaration ) ) )* ( (lv_toolbox_26_0= ruleToolBox ) )?
            {
            otherlv_0=(Token)match(input,15,FOLLOW_15_in_ruleLanguageDef1190); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getLanguageDefAccess().getLanguageKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:529:1: ( ( (lv_name_1_0= ruleQualifiedName ) ) | ( (lv_name_2_0= RULE_STRING ) ) )
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==RULE_ID) ) {
                alt8=1;
            }
            else if ( (LA8_0==RULE_STRING) ) {
                alt8=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;
            }
            switch (alt8) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:529:2: ( (lv_name_1_0= ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:529:2: ( (lv_name_1_0= ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:530:1: (lv_name_1_0= ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:530:1: (lv_name_1_0= ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:531:3: lv_name_1_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLanguageDefAccess().getNameQualifiedNameParserRuleCall_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleLanguageDef1212);
                    lv_name_1_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLanguageDefRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_1_0, 
                              		"QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:548:6: ( (lv_name_2_0= RULE_STRING ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:548:6: ( (lv_name_2_0= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:549:1: (lv_name_2_0= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:549:1: (lv_name_2_0= RULE_STRING )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:550:3: lv_name_2_0= RULE_STRING
                    {
                    lv_name_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLanguageDef1235); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_2_0, grammarAccess.getLanguageDefAccess().getNameSTRINGTerminalRuleCall_1_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLanguageDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_2_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:566:3: (otherlv_3= 'text' otherlv_4= '=' ( (lv_text_5_0= RULE_STRING ) ) )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==16) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:566:5: otherlv_3= 'text' otherlv_4= '=' ( (lv_text_5_0= RULE_STRING ) )
                    {
                    otherlv_3=(Token)match(input,16,FOLLOW_16_in_ruleLanguageDef1254); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getLanguageDefAccess().getTextKeyword_2_0());
                          
                    }
                    otherlv_4=(Token)match(input,17,FOLLOW_17_in_ruleLanguageDef1266); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getLanguageDefAccess().getEqualsSignKeyword_2_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:574:1: ( (lv_text_5_0= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:575:1: (lv_text_5_0= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:575:1: (lv_text_5_0= RULE_STRING )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:576:3: lv_text_5_0= RULE_STRING
                    {
                    lv_text_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLanguageDef1283); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_text_5_0, grammarAccess.getLanguageDefAccess().getTextSTRINGTerminalRuleCall_2_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLanguageDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"text",
                              		lv_text_5_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:592:4: (otherlv_6= 'extension' otherlv_7= '=' otherlv_8= '(' (otherlv_9= 'model' otherlv_10= ':' ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) ) )? (otherlv_12= 'diagram' otherlv_13= ':' ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) ) )? otherlv_15= ')' )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==18) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:592:6: otherlv_6= 'extension' otherlv_7= '=' otherlv_8= '(' (otherlv_9= 'model' otherlv_10= ':' ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) ) )? (otherlv_12= 'diagram' otherlv_13= ':' ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) ) )? otherlv_15= ')'
                    {
                    otherlv_6=(Token)match(input,18,FOLLOW_18_in_ruleLanguageDef1303); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getLanguageDefAccess().getExtensionKeyword_3_0());
                          
                    }
                    otherlv_7=(Token)match(input,17,FOLLOW_17_in_ruleLanguageDef1315); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getLanguageDefAccess().getEqualsSignKeyword_3_1());
                          
                    }
                    otherlv_8=(Token)match(input,19,FOLLOW_19_in_ruleLanguageDef1327); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getLanguageDefAccess().getLeftParenthesisKeyword_3_2());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:604:1: (otherlv_9= 'model' otherlv_10= ':' ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) ) )?
                    int alt11=2;
                    int LA11_0 = input.LA(1);

                    if ( (LA11_0==20) ) {
                        alt11=1;
                    }
                    switch (alt11) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:604:3: otherlv_9= 'model' otherlv_10= ':' ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) )
                            {
                            otherlv_9=(Token)match(input,20,FOLLOW_20_in_ruleLanguageDef1340); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_9, grammarAccess.getLanguageDefAccess().getModelKeyword_3_3_0());
                                  
                            }
                            otherlv_10=(Token)match(input,21,FOLLOW_21_in_ruleLanguageDef1352); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_10, grammarAccess.getLanguageDefAccess().getColonKeyword_3_3_1());
                                  
                            }
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:612:1: ( ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:613:1: ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:613:1: ( (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:614:1: (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:614:1: (lv_modelExtension_11_1= ruleQualifiedName | lv_modelExtension_11_2= RULE_STRING )
                            int alt10=2;
                            int LA10_0 = input.LA(1);

                            if ( (LA10_0==RULE_ID) ) {
                                alt10=1;
                            }
                            else if ( (LA10_0==RULE_STRING) ) {
                                alt10=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 10, 0, input);

                                throw nvae;
                            }
                            switch (alt10) {
                                case 1 :
                                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:615:3: lv_modelExtension_11_1= ruleQualifiedName
                                    {
                                    if ( state.backtracking==0 ) {
                                       
                                      	        newCompositeNode(grammarAccess.getLanguageDefAccess().getModelExtensionQualifiedNameParserRuleCall_3_3_2_0_0()); 
                                      	    
                                    }
                                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleLanguageDef1375);
                                    lv_modelExtension_11_1=ruleQualifiedName();

                                    state._fsp--;
                                    if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElementForParent(grammarAccess.getLanguageDefRule());
                                      	        }
                                             		set(
                                             			current, 
                                             			"modelExtension",
                                              		lv_modelExtension_11_1, 
                                              		"QualifiedName");
                                      	        afterParserOrEnumRuleCall();
                                      	    
                                    }

                                    }
                                    break;
                                case 2 :
                                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:630:8: lv_modelExtension_11_2= RULE_STRING
                                    {
                                    lv_modelExtension_11_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLanguageDef1390); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      			newLeafNode(lv_modelExtension_11_2, grammarAccess.getLanguageDefAccess().getModelExtensionSTRINGTerminalRuleCall_3_3_2_0_1()); 
                                      		
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getLanguageDefRule());
                                      	        }
                                             		setWithLastConsumed(
                                             			current, 
                                             			"modelExtension",
                                              		lv_modelExtension_11_2, 
                                              		"STRING");
                                      	    
                                    }

                                    }
                                    break;

                            }


                            }


                            }


                            }
                            break;

                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:648:4: (otherlv_12= 'diagram' otherlv_13= ':' ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) ) )?
                    int alt13=2;
                    int LA13_0 = input.LA(1);

                    if ( (LA13_0==22) ) {
                        alt13=1;
                    }
                    switch (alt13) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:648:6: otherlv_12= 'diagram' otherlv_13= ':' ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) )
                            {
                            otherlv_12=(Token)match(input,22,FOLLOW_22_in_ruleLanguageDef1413); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_12, grammarAccess.getLanguageDefAccess().getDiagramKeyword_3_4_0());
                                  
                            }
                            otherlv_13=(Token)match(input,21,FOLLOW_21_in_ruleLanguageDef1425); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_13, grammarAccess.getLanguageDefAccess().getColonKeyword_3_4_1());
                                  
                            }
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:656:1: ( ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:657:1: ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:657:1: ( (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:658:1: (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:658:1: (lv_diagramExtension_14_1= ruleQualifiedName | lv_diagramExtension_14_2= RULE_STRING )
                            int alt12=2;
                            int LA12_0 = input.LA(1);

                            if ( (LA12_0==RULE_ID) ) {
                                alt12=1;
                            }
                            else if ( (LA12_0==RULE_STRING) ) {
                                alt12=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 12, 0, input);

                                throw nvae;
                            }
                            switch (alt12) {
                                case 1 :
                                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:659:3: lv_diagramExtension_14_1= ruleQualifiedName
                                    {
                                    if ( state.backtracking==0 ) {
                                       
                                      	        newCompositeNode(grammarAccess.getLanguageDefAccess().getDiagramExtensionQualifiedNameParserRuleCall_3_4_2_0_0()); 
                                      	    
                                    }
                                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleLanguageDef1448);
                                    lv_diagramExtension_14_1=ruleQualifiedName();

                                    state._fsp--;
                                    if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElementForParent(grammarAccess.getLanguageDefRule());
                                      	        }
                                             		set(
                                             			current, 
                                             			"diagramExtension",
                                              		lv_diagramExtension_14_1, 
                                              		"QualifiedName");
                                      	        afterParserOrEnumRuleCall();
                                      	    
                                    }

                                    }
                                    break;
                                case 2 :
                                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:674:8: lv_diagramExtension_14_2= RULE_STRING
                                    {
                                    lv_diagramExtension_14_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLanguageDef1463); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      			newLeafNode(lv_diagramExtension_14_2, grammarAccess.getLanguageDefAccess().getDiagramExtensionSTRINGTerminalRuleCall_3_4_2_0_1()); 
                                      		
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getLanguageDefRule());
                                      	        }
                                             		setWithLastConsumed(
                                             			current, 
                                             			"diagramExtension",
                                              		lv_diagramExtension_14_2, 
                                              		"STRING");
                                      	    
                                    }

                                    }
                                    break;

                            }


                            }


                            }


                            }
                            break;

                    }

                    otherlv_15=(Token)match(input,23,FOLLOW_23_in_ruleLanguageDef1485); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_15, grammarAccess.getLanguageDefAccess().getRightParenthesisKeyword_3_5());
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:696:3: (otherlv_16= 'smallimage' otherlv_17= '=' ( (lv_smallimage_18_0= RULE_STRING ) ) )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==24) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:696:5: otherlv_16= 'smallimage' otherlv_17= '=' ( (lv_smallimage_18_0= RULE_STRING ) )
                    {
                    otherlv_16=(Token)match(input,24,FOLLOW_24_in_ruleLanguageDef1500); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_16, grammarAccess.getLanguageDefAccess().getSmallimageKeyword_4_0());
                          
                    }
                    otherlv_17=(Token)match(input,17,FOLLOW_17_in_ruleLanguageDef1512); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_17, grammarAccess.getLanguageDefAccess().getEqualsSignKeyword_4_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:704:1: ( (lv_smallimage_18_0= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:705:1: (lv_smallimage_18_0= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:705:1: (lv_smallimage_18_0= RULE_STRING )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:706:3: lv_smallimage_18_0= RULE_STRING
                    {
                    lv_smallimage_18_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLanguageDef1529); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_smallimage_18_0, grammarAccess.getLanguageDefAccess().getSmallimageSTRINGTerminalRuleCall_4_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLanguageDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"smallimage",
                              		lv_smallimage_18_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:722:4: (otherlv_19= 'largeimage' otherlv_20= '=' ( (lv_largeimage_21_0= RULE_STRING ) ) )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==25) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:722:6: otherlv_19= 'largeimage' otherlv_20= '=' ( (lv_largeimage_21_0= RULE_STRING ) )
                    {
                    otherlv_19=(Token)match(input,25,FOLLOW_25_in_ruleLanguageDef1549); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_19, grammarAccess.getLanguageDefAccess().getLargeimageKeyword_5_0());
                          
                    }
                    otherlv_20=(Token)match(input,17,FOLLOW_17_in_ruleLanguageDef1561); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_20, grammarAccess.getLanguageDefAccess().getEqualsSignKeyword_5_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:730:1: ( (lv_largeimage_21_0= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:731:1: (lv_largeimage_21_0= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:731:1: (lv_largeimage_21_0= RULE_STRING )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:732:3: lv_largeimage_21_0= RULE_STRING
                    {
                    lv_largeimage_21_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLanguageDef1578); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_largeimage_21_0, grammarAccess.getLanguageDefAccess().getLargeimageSTRINGTerminalRuleCall_5_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLanguageDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"largeimage",
                              		lv_largeimage_21_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:748:4: ( (lv_parents_22_0= ruleParentLanguages ) )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==26) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:749:1: (lv_parents_22_0= ruleParentLanguages )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:749:1: (lv_parents_22_0= ruleParentLanguages )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:750:3: lv_parents_22_0= ruleParentLanguages
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLanguageDefAccess().getParentsParentLanguagesParserRuleCall_6_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleParentLanguages_in_ruleLanguageDef1606);
            	    lv_parents_22_0=ruleParentLanguages();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLanguageDefRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"parents",
            	              		lv_parents_22_0, 
            	              		"ParentLanguages");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:766:3: ( (lv_imports_23_0= ruleImportStatement ) )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==27) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:767:1: (lv_imports_23_0= ruleImportStatement )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:767:1: (lv_imports_23_0= ruleImportStatement )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:768:3: lv_imports_23_0= ruleImportStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLanguageDefAccess().getImportsImportStatementParserRuleCall_7_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleImportStatement_in_ruleLanguageDef1628);
            	    lv_imports_23_0=ruleImportStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLanguageDefRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"imports",
            	              		lv_imports_23_0, 
            	              		"ImportStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:784:3: ( ( (lv_items_24_0= ruleModuleItem ) ) | ( (lv_vars_25_0= ruleXVariableDeclaration ) ) )*
            loop19:
            do {
                int alt19=3;
                int LA19_0 = input.LA(1);

                if ( (LA19_0==12||(LA19_0>=30 && LA19_0<=34)||LA19_0==47||LA19_0==49||LA19_0==51||LA19_0==53||(LA19_0>=60 && LA19_0<=61)||(LA19_0>=66 && LA19_0<=67)||(LA19_0>=69 && LA19_0<=70)||(LA19_0>=72 && LA19_0<=74)) ) {
                    alt19=1;
                }
                else if ( ((LA19_0>=115 && LA19_0<=116)) ) {
                    alt19=2;
                }


                switch (alt19) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:784:4: ( (lv_items_24_0= ruleModuleItem ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:784:4: ( (lv_items_24_0= ruleModuleItem ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:785:1: (lv_items_24_0= ruleModuleItem )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:785:1: (lv_items_24_0= ruleModuleItem )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:786:3: lv_items_24_0= ruleModuleItem
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLanguageDefAccess().getItemsModuleItemParserRuleCall_8_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleModuleItem_in_ruleLanguageDef1651);
            	    lv_items_24_0=ruleModuleItem();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLanguageDefRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"items",
            	              		lv_items_24_0, 
            	              		"ModuleItem");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:803:6: ( (lv_vars_25_0= ruleXVariableDeclaration ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:803:6: ( (lv_vars_25_0= ruleXVariableDeclaration ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:804:1: (lv_vars_25_0= ruleXVariableDeclaration )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:804:1: (lv_vars_25_0= ruleXVariableDeclaration )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:805:3: lv_vars_25_0= ruleXVariableDeclaration
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLanguageDefAccess().getVarsXVariableDeclarationParserRuleCall_8_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXVariableDeclaration_in_ruleLanguageDef1678);
            	    lv_vars_25_0=ruleXVariableDeclaration();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLanguageDefRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"vars",
            	              		lv_vars_25_0, 
            	              		"XVariableDeclaration");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop19;
                }
            } while (true);

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:821:4: ( (lv_toolbox_26_0= ruleToolBox ) )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==28) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:822:1: (lv_toolbox_26_0= ruleToolBox )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:822:1: (lv_toolbox_26_0= ruleToolBox )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:823:3: lv_toolbox_26_0= ruleToolBox
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLanguageDefAccess().getToolboxToolBoxParserRuleCall_9_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleToolBox_in_ruleLanguageDef1701);
                    lv_toolbox_26_0=ruleToolBox();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLanguageDefRule());
                      	        }
                             		set(
                             			current, 
                             			"toolbox",
                              		lv_toolbox_26_0, 
                              		"ToolBox");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLanguageDef"


    // $ANTLR start "entryRuleParentLanguages"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:847:1: entryRuleParentLanguages returns [EObject current=null] : iv_ruleParentLanguages= ruleParentLanguages EOF ;
    public final EObject entryRuleParentLanguages() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParentLanguages = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:848:2: (iv_ruleParentLanguages= ruleParentLanguages EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:849:2: iv_ruleParentLanguages= ruleParentLanguages EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getParentLanguagesRule()); 
            }
            pushFollow(FOLLOW_ruleParentLanguages_in_entryRuleParentLanguages1738);
            iv_ruleParentLanguages=ruleParentLanguages();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleParentLanguages; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleParentLanguages1748); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParentLanguages"


    // $ANTLR start "ruleParentLanguages"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:856:1: ruleParentLanguages returns [EObject current=null] : (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleParentLanguages() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_importURI_1_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:859:28: ( (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:860:1: (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:860:1: (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:860:3: otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleParentLanguages1785); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getParentLanguagesAccess().getIncludeKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:864:1: ( (lv_importURI_1_0= RULE_STRING ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:865:1: (lv_importURI_1_0= RULE_STRING )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:865:1: (lv_importURI_1_0= RULE_STRING )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:866:3: lv_importURI_1_0= RULE_STRING
            {
            lv_importURI_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleParentLanguages1802); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_importURI_1_0, grammarAccess.getParentLanguagesAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getParentLanguagesRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"importURI",
                      		lv_importURI_1_0, 
                      		"STRING");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParentLanguages"


    // $ANTLR start "entryRuleImportStatement"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:890:1: entryRuleImportStatement returns [EObject current=null] : iv_ruleImportStatement= ruleImportStatement EOF ;
    public final EObject entryRuleImportStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImportStatement = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:891:2: (iv_ruleImportStatement= ruleImportStatement EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:892:2: iv_ruleImportStatement= ruleImportStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getImportStatementRule()); 
            }
            pushFollow(FOLLOW_ruleImportStatement_in_entryRuleImportStatement1843);
            iv_ruleImportStatement=ruleImportStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleImportStatement; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleImportStatement1853); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImportStatement"


    // $ANTLR start "ruleImportStatement"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:899:1: ruleImportStatement returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWildCard ) ) ) ;
    public final EObject ruleImportStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:902:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWildCard ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:903:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWildCard ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:903:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWildCard ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:903:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWildCard ) )
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleImportStatement1890); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getImportStatementAccess().getImportKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:907:1: ( (lv_importedNamespace_1_0= ruleQualifiedNameWildCard ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:908:1: (lv_importedNamespace_1_0= ruleQualifiedNameWildCard )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:908:1: (lv_importedNamespace_1_0= ruleQualifiedNameWildCard )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:909:3: lv_importedNamespace_1_0= ruleQualifiedNameWildCard
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getImportStatementAccess().getImportedNamespaceQualifiedNameWildCardParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedNameWildCard_in_ruleImportStatement1911);
            lv_importedNamespace_1_0=ruleQualifiedNameWildCard();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getImportStatementRule());
              	        }
                     		set(
                     			current, 
                     			"importedNamespace",
                      		lv_importedNamespace_1_0, 
                      		"QualifiedNameWildCard");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImportStatement"


    // $ANTLR start "entryRuleToolBox"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:933:1: entryRuleToolBox returns [EObject current=null] : iv_ruleToolBox= ruleToolBox EOF ;
    public final EObject entryRuleToolBox() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleToolBox = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:934:2: (iv_ruleToolBox= ruleToolBox EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:935:2: iv_ruleToolBox= ruleToolBox EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getToolBoxRule()); 
            }
            pushFollow(FOLLOW_ruleToolBox_in_entryRuleToolBox1947);
            iv_ruleToolBox=ruleToolBox();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleToolBox; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleToolBox1957); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleToolBox"


    // $ANTLR start "ruleToolBox"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:942:1: ruleToolBox returns [EObject current=null] : ( () otherlv_1= 'toolbox' ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' ( ( (lv_Groups_4_0= ruleXGroupExpression ) ) | ( (lv_Views_5_0= ruleToolView ) ) )* ( ( 'end' )=>otherlv_6= 'end' ) ) ;
    public final EObject ruleToolBox() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_6=null;
        EObject lv_Groups_4_0 = null;

        EObject lv_Views_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:945:28: ( ( () otherlv_1= 'toolbox' ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' ( ( (lv_Groups_4_0= ruleXGroupExpression ) ) | ( (lv_Views_5_0= ruleToolView ) ) )* ( ( 'end' )=>otherlv_6= 'end' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:946:1: ( () otherlv_1= 'toolbox' ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' ( ( (lv_Groups_4_0= ruleXGroupExpression ) ) | ( (lv_Views_5_0= ruleToolView ) ) )* ( ( 'end' )=>otherlv_6= 'end' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:946:1: ( () otherlv_1= 'toolbox' ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' ( ( (lv_Groups_4_0= ruleXGroupExpression ) ) | ( (lv_Views_5_0= ruleToolView ) ) )* ( ( 'end' )=>otherlv_6= 'end' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:946:2: () otherlv_1= 'toolbox' ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' ( ( (lv_Groups_4_0= ruleXGroupExpression ) ) | ( (lv_Views_5_0= ruleToolView ) ) )* ( ( 'end' )=>otherlv_6= 'end' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:946:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:947:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getToolBoxAccess().getToolBoxAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,28,FOLLOW_28_in_ruleToolBox2003); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getToolBoxAccess().getToolboxKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:956:1: ( (lv_name_2_0= RULE_ID ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==RULE_ID) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:957:1: (lv_name_2_0= RULE_ID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:957:1: (lv_name_2_0= RULE_ID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:958:3: lv_name_2_0= RULE_ID
                    {
                    lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleToolBox2020); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_2_0, grammarAccess.getToolBoxAccess().getNameIDTerminalRuleCall_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getToolBoxRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_2_0, 
                              		"ID");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,21,FOLLOW_21_in_ruleToolBox2038); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getToolBoxAccess().getColonKeyword_3());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:978:1: ( ( (lv_Groups_4_0= ruleXGroupExpression ) ) | ( (lv_Views_5_0= ruleToolView ) ) )*
            loop22:
            do {
                int alt22=3;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==RULE_ID||LA22_0==80) ) {
                    alt22=1;
                }
                else if ( (LA22_0==35) ) {
                    alt22=2;
                }


                switch (alt22) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:978:2: ( (lv_Groups_4_0= ruleXGroupExpression ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:978:2: ( (lv_Groups_4_0= ruleXGroupExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:979:1: (lv_Groups_4_0= ruleXGroupExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:979:1: (lv_Groups_4_0= ruleXGroupExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:980:3: lv_Groups_4_0= ruleXGroupExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getToolBoxAccess().getGroupsXGroupExpressionParserRuleCall_4_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXGroupExpression_in_ruleToolBox2060);
            	    lv_Groups_4_0=ruleXGroupExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getToolBoxRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"Groups",
            	              		lv_Groups_4_0, 
            	              		"XGroupExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:997:6: ( (lv_Views_5_0= ruleToolView ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:997:6: ( (lv_Views_5_0= ruleToolView ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:998:1: (lv_Views_5_0= ruleToolView )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:998:1: (lv_Views_5_0= ruleToolView )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:999:3: lv_Views_5_0= ruleToolView
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getToolBoxAccess().getViewsToolViewParserRuleCall_4_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleToolView_in_ruleToolBox2087);
            	    lv_Views_5_0=ruleToolView();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getToolBoxRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"Views",
            	              		lv_Views_5_0, 
            	              		"ToolView");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1015:4: ( ( 'end' )=>otherlv_6= 'end' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1015:5: ( 'end' )=>otherlv_6= 'end'
            {
            otherlv_6=(Token)match(input,29,FOLLOW_29_in_ruleToolBox2109); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getToolBoxAccess().getEndKeyword_5());
                  
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleToolBox"


    // $ANTLR start "entryRuleToolGroup"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1028:1: entryRuleToolGroup returns [EObject current=null] : iv_ruleToolGroup= ruleToolGroup EOF ;
    public final EObject entryRuleToolGroup() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleToolGroup = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1029:2: (iv_ruleToolGroup= ruleToolGroup EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1030:2: iv_ruleToolGroup= ruleToolGroup EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getToolGroupRule()); 
            }
            pushFollow(FOLLOW_ruleToolGroup_in_entryRuleToolGroup2146);
            iv_ruleToolGroup=ruleToolGroup();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleToolGroup; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleToolGroup2156); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleToolGroup"


    // $ANTLR start "ruleToolGroup"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1037:1: ruleToolGroup returns [EObject current=null] : ( () otherlv_1= 'group' ( (lv_name_2_0= ruleQualifiedName ) ) otherlv_3= ':' (otherlv_4= 'label' otherlv_5= '=' ( (lv_text_6_0= RULE_STRING ) ) )? ( (lv_children_7_0= ruleXToolItemExpression ) )* ( ( 'end' )=>otherlv_8= 'end' ) ) ;
    public final EObject ruleToolGroup() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token lv_text_6_0=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        EObject lv_children_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1040:28: ( ( () otherlv_1= 'group' ( (lv_name_2_0= ruleQualifiedName ) ) otherlv_3= ':' (otherlv_4= 'label' otherlv_5= '=' ( (lv_text_6_0= RULE_STRING ) ) )? ( (lv_children_7_0= ruleXToolItemExpression ) )* ( ( 'end' )=>otherlv_8= 'end' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1041:1: ( () otherlv_1= 'group' ( (lv_name_2_0= ruleQualifiedName ) ) otherlv_3= ':' (otherlv_4= 'label' otherlv_5= '=' ( (lv_text_6_0= RULE_STRING ) ) )? ( (lv_children_7_0= ruleXToolItemExpression ) )* ( ( 'end' )=>otherlv_8= 'end' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1041:1: ( () otherlv_1= 'group' ( (lv_name_2_0= ruleQualifiedName ) ) otherlv_3= ':' (otherlv_4= 'label' otherlv_5= '=' ( (lv_text_6_0= RULE_STRING ) ) )? ( (lv_children_7_0= ruleXToolItemExpression ) )* ( ( 'end' )=>otherlv_8= 'end' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1041:2: () otherlv_1= 'group' ( (lv_name_2_0= ruleQualifiedName ) ) otherlv_3= ':' (otherlv_4= 'label' otherlv_5= '=' ( (lv_text_6_0= RULE_STRING ) ) )? ( (lv_children_7_0= ruleXToolItemExpression ) )* ( ( 'end' )=>otherlv_8= 'end' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1041:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1042:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getToolGroupAccess().getToolGroupAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,30,FOLLOW_30_in_ruleToolGroup2202); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getToolGroupAccess().getGroupKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1051:1: ( (lv_name_2_0= ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1052:1: (lv_name_2_0= ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1052:1: (lv_name_2_0= ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1053:3: lv_name_2_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getToolGroupAccess().getNameQualifiedNameParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleToolGroup2223);
            lv_name_2_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getToolGroupRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,21,FOLLOW_21_in_ruleToolGroup2235); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getToolGroupAccess().getColonKeyword_3());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1073:1: (otherlv_4= 'label' otherlv_5= '=' ( (lv_text_6_0= RULE_STRING ) ) )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==31) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1073:3: otherlv_4= 'label' otherlv_5= '=' ( (lv_text_6_0= RULE_STRING ) )
                    {
                    otherlv_4=(Token)match(input,31,FOLLOW_31_in_ruleToolGroup2248); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getToolGroupAccess().getLabelKeyword_4_0());
                          
                    }
                    otherlv_5=(Token)match(input,17,FOLLOW_17_in_ruleToolGroup2260); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getToolGroupAccess().getEqualsSignKeyword_4_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1081:1: ( (lv_text_6_0= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1082:1: (lv_text_6_0= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1082:1: (lv_text_6_0= RULE_STRING )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1083:3: lv_text_6_0= RULE_STRING
                    {
                    lv_text_6_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleToolGroup2277); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_text_6_0, grammarAccess.getToolGroupAccess().getTextSTRINGTerminalRuleCall_4_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getToolGroupRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"text",
                              		lv_text_6_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1099:4: ( (lv_children_7_0= ruleXToolItemExpression ) )*
            loop24:
            do {
                int alt24=2;
                int LA24_0 = input.LA(1);

                if ( (LA24_0==RULE_ID||LA24_0==80) ) {
                    alt24=1;
                }


                switch (alt24) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1100:1: (lv_children_7_0= ruleXToolItemExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1100:1: (lv_children_7_0= ruleXToolItemExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1101:3: lv_children_7_0= ruleXToolItemExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getToolGroupAccess().getChildrenXToolItemExpressionParserRuleCall_5_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXToolItemExpression_in_ruleToolGroup2305);
            	    lv_children_7_0=ruleXToolItemExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getToolGroupRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_7_0, 
            	              		"XToolItemExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop24;
                }
            } while (true);

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1117:3: ( ( 'end' )=>otherlv_8= 'end' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1117:4: ( 'end' )=>otherlv_8= 'end'
            {
            otherlv_8=(Token)match(input,29,FOLLOW_29_in_ruleToolGroup2326); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getToolGroupAccess().getEndKeyword_6());
                  
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleToolGroup"


    // $ANTLR start "entryRuleToolItem"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1130:1: entryRuleToolItem returns [EObject current=null] : iv_ruleToolItem= ruleToolItem EOF ;
    public final EObject entryRuleToolItem() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleToolItem = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1131:2: (iv_ruleToolItem= ruleToolItem EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1132:2: iv_ruleToolItem= ruleToolItem EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getToolItemRule()); 
            }
            pushFollow(FOLLOW_ruleToolItem_in_entryRuleToolItem2363);
            iv_ruleToolItem=ruleToolItem();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleToolItem; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleToolItem2373); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleToolItem"


    // $ANTLR start "ruleToolItem"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1139:1: ruleToolItem returns [EObject current=null] : ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+ {...}?) ) ) ;
    public final EObject ruleToolItem() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token lv_text_7_0=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token lv_tooltip_10_0=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1142:28: ( ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+ {...}?) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1143:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+ {...}?) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1143:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+ {...}?) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1145:1: ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+ {...}?) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1145:1: ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+ {...}?) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1146:2: ( ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+ {...}?)
            {
            getUnorderedGroupHelper().enter(grammarAccess.getToolItemAccess().getUnorderedGroup());
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1149:2: ( ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+ {...}?)
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1150:3: ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+ {...}?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1150:3: ( ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) ) )+
            int cnt27=0;
            loop27:
            do {
                int alt27=4;
                switch ( input.LA(1) ) {
                case 32:
                    {
                    int LA27_2 = input.LA(2);

                    if ( getUnorderedGroupHelper().canSelect(grammarAccess.getToolItemAccess().getUnorderedGroup(), 0) ) {
                        alt27=1;
                    }


                    }
                    break;
                case 33:
                    {
                    int LA27_3 = input.LA(2);

                    if ( getUnorderedGroupHelper().canSelect(grammarAccess.getToolItemAccess().getUnorderedGroup(), 1) ) {
                        alt27=2;
                    }


                    }
                    break;
                case 34:
                    {
                    int LA27_4 = input.LA(2);

                    if ( getUnorderedGroupHelper().canSelect(grammarAccess.getToolItemAccess().getUnorderedGroup(), 2) ) {
                        alt27=3;
                    }


                    }
                    break;

                }

                switch (alt27) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1152:4: ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1152:4: ({...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1153:5: {...}? => ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getToolItemAccess().getUnorderedGroup(), 0) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleToolItem", "getUnorderedGroupHelper().canSelect(grammarAccess.getToolItemAccess().getUnorderedGroup(), 0)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1153:103: ( ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1154:6: ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getToolItemAccess().getUnorderedGroup(), 0);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1157:6: ({...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1157:7: {...}? => (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleToolItem", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1157:16: (otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )? )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1157:18: otherlv_1= 'tool' ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) ) otherlv_4= ':' (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )?
            	    {
            	    otherlv_1=(Token)match(input,32,FOLLOW_32_in_ruleToolItem2455); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getToolItemAccess().getToolKeyword_0_0());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1161:1: ( ( (lv_name_2_0= ruleQualifiedName ) ) | ( (lv_name_3_0= RULE_STRING ) ) )
            	    int alt25=2;
            	    int LA25_0 = input.LA(1);

            	    if ( (LA25_0==RULE_ID) ) {
            	        alt25=1;
            	    }
            	    else if ( (LA25_0==RULE_STRING) ) {
            	        alt25=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 25, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt25) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1161:2: ( (lv_name_2_0= ruleQualifiedName ) )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1161:2: ( (lv_name_2_0= ruleQualifiedName ) )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1162:1: (lv_name_2_0= ruleQualifiedName )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1162:1: (lv_name_2_0= ruleQualifiedName )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1163:3: lv_name_2_0= ruleQualifiedName
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getToolItemAccess().getNameQualifiedNameParserRuleCall_0_1_0_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleQualifiedName_in_ruleToolItem2477);
            	            lv_name_2_0=ruleQualifiedName();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getToolItemRule());
            	              	        }
            	                     		set(
            	                     			current, 
            	                     			"name",
            	                      		lv_name_2_0, 
            	                      		"QualifiedName");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1180:6: ( (lv_name_3_0= RULE_STRING ) )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1180:6: ( (lv_name_3_0= RULE_STRING ) )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1181:1: (lv_name_3_0= RULE_STRING )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1181:1: (lv_name_3_0= RULE_STRING )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1182:3: lv_name_3_0= RULE_STRING
            	            {
            	            lv_name_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleToolItem2500); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              			newLeafNode(lv_name_3_0, grammarAccess.getToolItemAccess().getNameSTRINGTerminalRuleCall_0_1_1_0()); 
            	              		
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getToolItemRule());
            	              	        }
            	                     		setWithLastConsumed(
            	                     			current, 
            	                     			"name",
            	                      		lv_name_3_0, 
            	                      		"STRING");
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;

            	    }

            	    otherlv_4=(Token)match(input,21,FOLLOW_21_in_ruleToolItem2518); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_4, grammarAccess.getToolItemAccess().getColonKeyword_0_2());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1202:1: (otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) ) )?
            	    int alt26=2;
            	    int LA26_0 = input.LA(1);

            	    if ( (LA26_0==31) ) {
            	        int LA26_1 = input.LA(2);

            	        if ( (LA26_1==17) ) {
            	            alt26=1;
            	        }
            	    }
            	    switch (alt26) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1202:3: otherlv_5= 'label' otherlv_6= '=' ( (lv_text_7_0= RULE_STRING ) )
            	            {
            	            otherlv_5=(Token)match(input,31,FOLLOW_31_in_ruleToolItem2531); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_5, grammarAccess.getToolItemAccess().getLabelKeyword_0_3_0());
            	                  
            	            }
            	            otherlv_6=(Token)match(input,17,FOLLOW_17_in_ruleToolItem2543); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_6, grammarAccess.getToolItemAccess().getEqualsSignKeyword_0_3_1());
            	                  
            	            }
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1210:1: ( (lv_text_7_0= RULE_STRING ) )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1211:1: (lv_text_7_0= RULE_STRING )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1211:1: (lv_text_7_0= RULE_STRING )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1212:3: lv_text_7_0= RULE_STRING
            	            {
            	            lv_text_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleToolItem2560); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              			newLeafNode(lv_text_7_0, grammarAccess.getToolItemAccess().getTextSTRINGTerminalRuleCall_0_3_2_0()); 
            	              		
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getToolItemRule());
            	              	        }
            	                     		setWithLastConsumed(
            	                     			current, 
            	                     			"text",
            	                      		lv_text_7_0, 
            	                      		"STRING");
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;

            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getToolItemAccess().getUnorderedGroup());

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1235:4: ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1235:4: ({...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1236:5: {...}? => ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getToolItemAccess().getUnorderedGroup(), 1) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleToolItem", "getUnorderedGroupHelper().canSelect(grammarAccess.getToolItemAccess().getUnorderedGroup(), 1)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1236:103: ( ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1237:6: ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getToolItemAccess().getUnorderedGroup(), 1);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1240:6: ({...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1240:7: {...}? => (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleToolItem", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1240:16: (otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1240:18: otherlv_8= 'tooltip' otherlv_9= '=' ( (lv_tooltip_10_0= RULE_STRING ) )
            	    {
            	    otherlv_8=(Token)match(input,33,FOLLOW_33_in_ruleToolItem2635); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_8, grammarAccess.getToolItemAccess().getTooltipKeyword_1_0());
            	          
            	    }
            	    otherlv_9=(Token)match(input,17,FOLLOW_17_in_ruleToolItem2647); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_9, grammarAccess.getToolItemAccess().getEqualsSignKeyword_1_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1248:1: ( (lv_tooltip_10_0= RULE_STRING ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1249:1: (lv_tooltip_10_0= RULE_STRING )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1249:1: (lv_tooltip_10_0= RULE_STRING )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1250:3: lv_tooltip_10_0= RULE_STRING
            	    {
            	    lv_tooltip_10_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleToolItem2664); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			newLeafNode(lv_tooltip_10_0, grammarAccess.getToolItemAccess().getTooltipSTRINGTerminalRuleCall_1_2_0()); 
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getToolItemRule());
            	      	        }
            	             		setWithLastConsumed(
            	             			current, 
            	             			"tooltip",
            	              		lv_tooltip_10_0, 
            	              		"STRING");
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getToolItemAccess().getUnorderedGroup());

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1273:4: ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1273:4: ({...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1274:5: {...}? => ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getToolItemAccess().getUnorderedGroup(), 2) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleToolItem", "getUnorderedGroupHelper().canSelect(grammarAccess.getToolItemAccess().getUnorderedGroup(), 2)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1274:103: ( ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1275:6: ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getToolItemAccess().getUnorderedGroup(), 2);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1278:6: ({...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1278:7: {...}? => (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleToolItem", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1278:16: (otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1278:18: otherlv_11= 'element' otherlv_12= '=' ( ( ruleQualifiedName ) )
            	    {
            	    otherlv_11=(Token)match(input,34,FOLLOW_34_in_ruleToolItem2737); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_11, grammarAccess.getToolItemAccess().getElementKeyword_2_0());
            	          
            	    }
            	    otherlv_12=(Token)match(input,17,FOLLOW_17_in_ruleToolItem2749); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_12, grammarAccess.getToolItemAccess().getEqualsSignKeyword_2_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1286:1: ( ( ruleQualifiedName ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1287:1: ( ruleQualifiedName )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1287:1: ( ruleQualifiedName )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1288:3: ruleQualifiedName
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getToolItemRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getToolItemAccess().getElementElementDefCrossReference_2_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleQualifiedName_in_ruleToolItem2772);
            	    ruleQualifiedName();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getToolItemAccess().getUnorderedGroup());

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt27 >= 1 ) break loop27;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(27, input);
                        throw eee;
                }
                cnt27++;
            } while (true);

            if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getToolItemAccess().getUnorderedGroup()) ) {
                if (state.backtracking>0) {state.failed=true; return current;}
                throw new FailedPredicateException(input, "ruleToolItem", "getUnorderedGroupHelper().canLeave(grammarAccess.getToolItemAccess().getUnorderedGroup())");
            }

            }


            }

            getUnorderedGroupHelper().leave(grammarAccess.getToolItemAccess().getUnorderedGroup());

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleToolItem"


    // $ANTLR start "entryRuleToolView"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1324:1: entryRuleToolView returns [EObject current=null] : iv_ruleToolView= ruleToolView EOF ;
    public final EObject entryRuleToolView() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleToolView = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1325:2: (iv_ruleToolView= ruleToolView EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1326:2: iv_ruleToolView= ruleToolView EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getToolViewRule()); 
            }
            pushFollow(FOLLOW_ruleToolView_in_entryRuleToolView2854);
            iv_ruleToolView=ruleToolView();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleToolView; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleToolView2864); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleToolView"


    // $ANTLR start "ruleToolView"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1333:1: ruleToolView returns [EObject current=null] : (otherlv_0= 'view' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '[' ( (lv_parameters_3_0= ruleToolViewParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleToolViewParameter ) ) )* otherlv_6= ']' )? otherlv_7= ':' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* ) ;
    public final EObject ruleToolView() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_parameters_3_0 = null;

        EObject lv_parameters_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1336:28: ( (otherlv_0= 'view' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '[' ( (lv_parameters_3_0= ruleToolViewParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleToolViewParameter ) ) )* otherlv_6= ']' )? otherlv_7= ':' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1337:1: (otherlv_0= 'view' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '[' ( (lv_parameters_3_0= ruleToolViewParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleToolViewParameter ) ) )* otherlv_6= ']' )? otherlv_7= ':' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1337:1: (otherlv_0= 'view' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '[' ( (lv_parameters_3_0= ruleToolViewParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleToolViewParameter ) ) )* otherlv_6= ']' )? otherlv_7= ':' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1337:3: otherlv_0= 'view' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '[' ( (lv_parameters_3_0= ruleToolViewParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleToolViewParameter ) ) )* otherlv_6= ']' )? otherlv_7= ':' ( ( ruleQualifiedName ) ) (otherlv_9= ',' ( ( ruleQualifiedName ) ) )*
            {
            otherlv_0=(Token)match(input,35,FOLLOW_35_in_ruleToolView2901); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getToolViewAccess().getViewKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1341:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1342:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1342:1: (lv_name_1_0= ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1343:3: lv_name_1_0= ruleQualifiedName
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getToolViewAccess().getNameQualifiedNameParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleToolView2922);
            lv_name_1_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getToolViewRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"QualifiedName");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1359:2: (otherlv_2= '[' ( (lv_parameters_3_0= ruleToolViewParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleToolViewParameter ) ) )* otherlv_6= ']' )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==36) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1359:4: otherlv_2= '[' ( (lv_parameters_3_0= ruleToolViewParameter ) ) (otherlv_4= ',' ( (lv_parameters_5_0= ruleToolViewParameter ) ) )* otherlv_6= ']'
                    {
                    otherlv_2=(Token)match(input,36,FOLLOW_36_in_ruleToolView2935); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getToolViewAccess().getLeftSquareBracketKeyword_2_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1363:1: ( (lv_parameters_3_0= ruleToolViewParameter ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1364:1: (lv_parameters_3_0= ruleToolViewParameter )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1364:1: (lv_parameters_3_0= ruleToolViewParameter )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1365:3: lv_parameters_3_0= ruleToolViewParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getToolViewAccess().getParametersToolViewParameterParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleToolViewParameter_in_ruleToolView2956);
                    lv_parameters_3_0=ruleToolViewParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getToolViewRule());
                      	        }
                             		add(
                             			current, 
                             			"parameters",
                              		lv_parameters_3_0, 
                              		"ToolViewParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1381:2: (otherlv_4= ',' ( (lv_parameters_5_0= ruleToolViewParameter ) ) )*
                    loop28:
                    do {
                        int alt28=2;
                        int LA28_0 = input.LA(1);

                        if ( (LA28_0==37) ) {
                            alt28=1;
                        }


                        switch (alt28) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1381:4: otherlv_4= ',' ( (lv_parameters_5_0= ruleToolViewParameter ) )
                    	    {
                    	    otherlv_4=(Token)match(input,37,FOLLOW_37_in_ruleToolView2969); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getToolViewAccess().getCommaKeyword_2_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1385:1: ( (lv_parameters_5_0= ruleToolViewParameter ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1386:1: (lv_parameters_5_0= ruleToolViewParameter )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1386:1: (lv_parameters_5_0= ruleToolViewParameter )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1387:3: lv_parameters_5_0= ruleToolViewParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getToolViewAccess().getParametersToolViewParameterParserRuleCall_2_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleToolViewParameter_in_ruleToolView2990);
                    	    lv_parameters_5_0=ruleToolViewParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getToolViewRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"parameters",
                    	              		lv_parameters_5_0, 
                    	              		"ToolViewParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop28;
                        }
                    } while (true);

                    otherlv_6=(Token)match(input,38,FOLLOW_38_in_ruleToolView3004); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getToolViewAccess().getRightSquareBracketKeyword_2_3());
                          
                    }

                    }
                    break;

            }

            otherlv_7=(Token)match(input,21,FOLLOW_21_in_ruleToolView3018); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getToolViewAccess().getColonKeyword_3());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1411:1: ( ( ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1412:1: ( ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1412:1: ( ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1413:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getToolViewRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getToolViewAccess().getToolsToolItemCrossReference_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleToolView3041);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1426:2: (otherlv_9= ',' ( ( ruleQualifiedName ) ) )*
            loop30:
            do {
                int alt30=2;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==37) ) {
                    alt30=1;
                }


                switch (alt30) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1426:4: otherlv_9= ',' ( ( ruleQualifiedName ) )
            	    {
            	    otherlv_9=(Token)match(input,37,FOLLOW_37_in_ruleToolView3054); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_9, grammarAccess.getToolViewAccess().getCommaKeyword_5_0());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1430:1: ( ( ruleQualifiedName ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1431:1: ( ruleQualifiedName )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1431:1: ( ruleQualifiedName )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1432:3: ruleQualifiedName
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getToolViewRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getToolViewAccess().getToolsToolItemCrossReference_5_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleQualifiedName_in_ruleToolView3077);
            	    ruleQualifiedName();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop30;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleToolView"


    // $ANTLR start "entryRuleTagDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1453:1: entryRuleTagDef returns [EObject current=null] : iv_ruleTagDef= ruleTagDef EOF ;
    public final EObject entryRuleTagDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTagDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1454:2: (iv_ruleTagDef= ruleTagDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1455:2: iv_ruleTagDef= ruleTagDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTagDefRule()); 
            }
            pushFollow(FOLLOW_ruleTagDef_in_entryRuleTagDef3115);
            iv_ruleTagDef=ruleTagDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTagDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTagDef3125); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTagDef"


    // $ANTLR start "ruleTagDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1462:1: ruleTagDef returns [EObject current=null] : (this_PredefinedTagDef_0= rulePredefinedTagDef | this_CustomTagDef_1= ruleCustomTagDef ) ;
    public final EObject ruleTagDef() throws RecognitionException {
        EObject current = null;

        EObject this_PredefinedTagDef_0 = null;

        EObject this_CustomTagDef_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1465:28: ( (this_PredefinedTagDef_0= rulePredefinedTagDef | this_CustomTagDef_1= ruleCustomTagDef ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1466:1: (this_PredefinedTagDef_0= rulePredefinedTagDef | this_CustomTagDef_1= ruleCustomTagDef )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1466:1: (this_PredefinedTagDef_0= rulePredefinedTagDef | this_CustomTagDef_1= ruleCustomTagDef )
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( ((LA31_0>=39 && LA31_0<=40)) ) {
                alt31=1;
            }
            else if ( ((LA31_0>=RULE_STRING && LA31_0<=RULE_ID)) ) {
                alt31=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 31, 0, input);

                throw nvae;
            }
            switch (alt31) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1467:5: this_PredefinedTagDef_0= rulePredefinedTagDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTagDefAccess().getPredefinedTagDefParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_rulePredefinedTagDef_in_ruleTagDef3172);
                    this_PredefinedTagDef_0=rulePredefinedTagDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PredefinedTagDef_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1477:5: this_CustomTagDef_1= ruleCustomTagDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTagDefAccess().getCustomTagDefParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleCustomTagDef_in_ruleTagDef3199);
                    this_CustomTagDef_1=ruleCustomTagDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_CustomTagDef_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTagDef"


    // $ANTLR start "entryRuleCustomTagDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1493:1: entryRuleCustomTagDef returns [EObject current=null] : iv_ruleCustomTagDef= ruleCustomTagDef EOF ;
    public final EObject entryRuleCustomTagDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCustomTagDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1494:2: (iv_ruleCustomTagDef= ruleCustomTagDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1495:2: iv_ruleCustomTagDef= ruleCustomTagDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCustomTagDefRule()); 
            }
            pushFollow(FOLLOW_ruleCustomTagDef_in_entryRuleCustomTagDef3234);
            iv_ruleCustomTagDef=ruleCustomTagDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCustomTagDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCustomTagDef3244); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCustomTagDef"


    // $ANTLR start "ruleCustomTagDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1502:1: ruleCustomTagDef returns [EObject current=null] : ( ( ( (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}' ) ;
    public final EObject ruleCustomTagDef() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_1=null;
        Token lv_name_0_2=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_entry_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1505:28: ( ( ( ( (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1506:1: ( ( ( (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1506:1: ( ( ( (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1506:2: ( ( (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1506:2: ( ( (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1507:1: ( (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1507:1: ( (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1508:1: (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1508:1: (lv_name_0_1= RULE_ID | lv_name_0_2= RULE_STRING )
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==RULE_ID) ) {
                alt32=1;
            }
            else if ( (LA32_0==RULE_STRING) ) {
                alt32=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }
            switch (alt32) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1509:3: lv_name_0_1= RULE_ID
                    {
                    lv_name_0_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCustomTagDef3288); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_0_1, grammarAccess.getCustomTagDefAccess().getNameIDTerminalRuleCall_0_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getCustomTagDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_0_1, 
                              		"ID");
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1524:8: lv_name_0_2= RULE_STRING
                    {
                    lv_name_0_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleCustomTagDef3308); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_0_2, grammarAccess.getCustomTagDefAccess().getNameSTRINGTerminalRuleCall_0_0_1()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getCustomTagDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_0_2, 
                              		"STRING");
                      	    
                    }

                    }
                    break;

            }


            }


            }

            otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleCustomTagDef3328); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getCustomTagDefAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1546:1: ( (lv_entry_2_0= ruleTagEntryDef ) )*
            loop33:
            do {
                int alt33=2;
                int LA33_0 = input.LA(1);

                if ( ((LA33_0>=RULE_STRING && LA33_0<=RULE_ID)) ) {
                    alt33=1;
                }


                switch (alt33) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1547:1: (lv_entry_2_0= ruleTagEntryDef )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1547:1: (lv_entry_2_0= ruleTagEntryDef )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1548:3: lv_entry_2_0= ruleTagEntryDef
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getCustomTagDefAccess().getEntryTagEntryDefParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleTagEntryDef_in_ruleCustomTagDef3349);
            	    lv_entry_2_0=ruleTagEntryDef();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getCustomTagDefRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"entry",
            	              		lv_entry_2_0, 
            	              		"TagEntryDef");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop33;
                }
            } while (true);

            otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleCustomTagDef3362); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getCustomTagDefAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCustomTagDef"


    // $ANTLR start "entryRulePredefinedTagDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1576:1: entryRulePredefinedTagDef returns [EObject current=null] : iv_rulePredefinedTagDef= rulePredefinedTagDef EOF ;
    public final EObject entryRulePredefinedTagDef() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePredefinedTagDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1577:2: (iv_rulePredefinedTagDef= rulePredefinedTagDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1578:2: iv_rulePredefinedTagDef= rulePredefinedTagDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPredefinedTagDefRule()); 
            }
            pushFollow(FOLLOW_rulePredefinedTagDef_in_entryRulePredefinedTagDef3398);
            iv_rulePredefinedTagDef=rulePredefinedTagDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePredefinedTagDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePredefinedTagDef3408); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePredefinedTagDef"


    // $ANTLR start "rulePredefinedTagDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1585:1: rulePredefinedTagDef returns [EObject current=null] : ( ( ( (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}' ) ;
    public final EObject rulePredefinedTagDef() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_1=null;
        Token lv_name_0_2=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_entry_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1588:28: ( ( ( ( (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1589:1: ( ( ( (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1589:1: ( ( ( (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1589:2: ( ( (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' ) ) ) otherlv_1= '{' ( (lv_entry_2_0= ruleTagEntryDef ) )* otherlv_3= '}'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1589:2: ( ( (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1590:1: ( (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1590:1: ( (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1591:1: (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1591:1: (lv_name_0_1= 'fields' | lv_name_0_2= 'properties' )
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==39) ) {
                alt34=1;
            }
            else if ( (LA34_0==40) ) {
                alt34=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 34, 0, input);

                throw nvae;
            }
            switch (alt34) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1592:3: lv_name_0_1= 'fields'
                    {
                    lv_name_0_1=(Token)match(input,39,FOLLOW_39_in_rulePredefinedTagDef3453); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_1, grammarAccess.getPredefinedTagDefAccess().getNameFieldsKeyword_0_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPredefinedTagDefRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_1, null);
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1604:8: lv_name_0_2= 'properties'
                    {
                    lv_name_0_2=(Token)match(input,40,FOLLOW_40_in_rulePredefinedTagDef3482); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_2, grammarAccess.getPredefinedTagDefAccess().getNamePropertiesKeyword_0_0_1());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPredefinedTagDefRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_2, null);
                      	    
                    }

                    }
                    break;

            }


            }


            }

            otherlv_1=(Token)match(input,13,FOLLOW_13_in_rulePredefinedTagDef3510); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getPredefinedTagDefAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1623:1: ( (lv_entry_2_0= ruleTagEntryDef ) )*
            loop35:
            do {
                int alt35=2;
                int LA35_0 = input.LA(1);

                if ( ((LA35_0>=RULE_STRING && LA35_0<=RULE_ID)) ) {
                    alt35=1;
                }


                switch (alt35) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1624:1: (lv_entry_2_0= ruleTagEntryDef )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1624:1: (lv_entry_2_0= ruleTagEntryDef )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1625:3: lv_entry_2_0= ruleTagEntryDef
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPredefinedTagDefAccess().getEntryTagEntryDefParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleTagEntryDef_in_rulePredefinedTagDef3531);
            	    lv_entry_2_0=ruleTagEntryDef();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPredefinedTagDefRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"entry",
            	              		lv_entry_2_0, 
            	              		"TagEntryDef");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop35;
                }
            } while (true);

            otherlv_3=(Token)match(input,14,FOLLOW_14_in_rulePredefinedTagDef3544); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getPredefinedTagDefAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePredefinedTagDef"


    // $ANTLR start "entryRuleTagEntryDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1653:1: entryRuleTagEntryDef returns [EObject current=null] : iv_ruleTagEntryDef= ruleTagEntryDef EOF ;
    public final EObject entryRuleTagEntryDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTagEntryDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1654:2: (iv_ruleTagEntryDef= ruleTagEntryDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1655:2: iv_ruleTagEntryDef= ruleTagEntryDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTagEntryDefRule()); 
            }
            pushFollow(FOLLOW_ruleTagEntryDef_in_entryRuleTagEntryDef3580);
            iv_ruleTagEntryDef=ruleTagEntryDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTagEntryDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTagEntryDef3590); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTagEntryDef"


    // $ANTLR start "ruleTagEntryDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1662:1: ruleTagEntryDef returns [EObject current=null] : ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_parameters_2_0= ruleTagEntryDefParameter ) ) (otherlv_3= ',' ( (lv_parameters_4_0= ruleTagEntryDefParameter ) ) )* otherlv_5= ']' )? ( ( (lv_typedEntry_6_0= ':' ) ) ( ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) ) ) )? (otherlv_8= '=' ( ( (lv_value_9_0= ruleXExpression ) ) | (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) ) ) )? ) ;
    public final EObject ruleTagEntryDef() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_2=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token lv_typedEntry_6_0=null;
        Token lv_type_7_1=null;
        Token lv_type_7_2=null;
        Token lv_type_7_3=null;
        Token lv_type_7_4=null;
        Token lv_type_7_5=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        AntlrDatatypeRuleToken lv_name_0_1 = null;

        EObject lv_parameters_2_0 = null;

        EObject lv_parameters_4_0 = null;

        EObject lv_value_9_0 = null;

        EObject lv_ref_11_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1665:28: ( ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_parameters_2_0= ruleTagEntryDefParameter ) ) (otherlv_3= ',' ( (lv_parameters_4_0= ruleTagEntryDefParameter ) ) )* otherlv_5= ']' )? ( ( (lv_typedEntry_6_0= ':' ) ) ( ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) ) ) )? (otherlv_8= '=' ( ( (lv_value_9_0= ruleXExpression ) ) | (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) ) ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1666:1: ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_parameters_2_0= ruleTagEntryDefParameter ) ) (otherlv_3= ',' ( (lv_parameters_4_0= ruleTagEntryDefParameter ) ) )* otherlv_5= ']' )? ( ( (lv_typedEntry_6_0= ':' ) ) ( ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) ) ) )? (otherlv_8= '=' ( ( (lv_value_9_0= ruleXExpression ) ) | (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) ) ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1666:1: ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_parameters_2_0= ruleTagEntryDefParameter ) ) (otherlv_3= ',' ( (lv_parameters_4_0= ruleTagEntryDefParameter ) ) )* otherlv_5= ']' )? ( ( (lv_typedEntry_6_0= ':' ) ) ( ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) ) ) )? (otherlv_8= '=' ( ( (lv_value_9_0= ruleXExpression ) ) | (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) ) ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1666:2: ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_parameters_2_0= ruleTagEntryDefParameter ) ) (otherlv_3= ',' ( (lv_parameters_4_0= ruleTagEntryDefParameter ) ) )* otherlv_5= ']' )? ( ( (lv_typedEntry_6_0= ':' ) ) ( ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) ) ) )? (otherlv_8= '=' ( ( (lv_value_9_0= ruleXExpression ) ) | (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) ) ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1666:2: ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1667:1: ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1667:1: ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1668:1: (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1668:1: (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING )
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==RULE_ID) ) {
                alt36=1;
            }
            else if ( (LA36_0==RULE_STRING) ) {
                alt36=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 36, 0, input);

                throw nvae;
            }
            switch (alt36) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1669:3: lv_name_0_1= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTagEntryDefAccess().getNameQualifiedNameParserRuleCall_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleTagEntryDef3638);
                    lv_name_0_1=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTagEntryDefRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_0_1, 
                              		"QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1684:8: lv_name_0_2= RULE_STRING
                    {
                    lv_name_0_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTagEntryDef3653); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_0_2, grammarAccess.getTagEntryDefAccess().getNameSTRINGTerminalRuleCall_0_0_1()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTagEntryDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_0_2, 
                              		"STRING");
                      	    
                    }

                    }
                    break;

            }


            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1702:2: (otherlv_1= '[' ( (lv_parameters_2_0= ruleTagEntryDefParameter ) ) (otherlv_3= ',' ( (lv_parameters_4_0= ruleTagEntryDefParameter ) ) )* otherlv_5= ']' )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==36) ) {
                alt38=1;
            }
            switch (alt38) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1702:4: otherlv_1= '[' ( (lv_parameters_2_0= ruleTagEntryDefParameter ) ) (otherlv_3= ',' ( (lv_parameters_4_0= ruleTagEntryDefParameter ) ) )* otherlv_5= ']'
                    {
                    otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleTagEntryDef3674); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getTagEntryDefAccess().getLeftSquareBracketKeyword_1_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1706:1: ( (lv_parameters_2_0= ruleTagEntryDefParameter ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1707:1: (lv_parameters_2_0= ruleTagEntryDefParameter )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1707:1: (lv_parameters_2_0= ruleTagEntryDefParameter )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1708:3: lv_parameters_2_0= ruleTagEntryDefParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTagEntryDefAccess().getParametersTagEntryDefParameterParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleTagEntryDefParameter_in_ruleTagEntryDef3695);
                    lv_parameters_2_0=ruleTagEntryDefParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTagEntryDefRule());
                      	        }
                             		add(
                             			current, 
                             			"parameters",
                              		lv_parameters_2_0, 
                              		"TagEntryDefParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1724:2: (otherlv_3= ',' ( (lv_parameters_4_0= ruleTagEntryDefParameter ) ) )*
                    loop37:
                    do {
                        int alt37=2;
                        int LA37_0 = input.LA(1);

                        if ( (LA37_0==37) ) {
                            alt37=1;
                        }


                        switch (alt37) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1724:4: otherlv_3= ',' ( (lv_parameters_4_0= ruleTagEntryDefParameter ) )
                    	    {
                    	    otherlv_3=(Token)match(input,37,FOLLOW_37_in_ruleTagEntryDef3708); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getTagEntryDefAccess().getCommaKeyword_1_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1728:1: ( (lv_parameters_4_0= ruleTagEntryDefParameter ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1729:1: (lv_parameters_4_0= ruleTagEntryDefParameter )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1729:1: (lv_parameters_4_0= ruleTagEntryDefParameter )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1730:3: lv_parameters_4_0= ruleTagEntryDefParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getTagEntryDefAccess().getParametersTagEntryDefParameterParserRuleCall_1_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleTagEntryDefParameter_in_ruleTagEntryDef3729);
                    	    lv_parameters_4_0=ruleTagEntryDefParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getTagEntryDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"parameters",
                    	              		lv_parameters_4_0, 
                    	              		"TagEntryDefParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop37;
                        }
                    } while (true);

                    otherlv_5=(Token)match(input,38,FOLLOW_38_in_ruleTagEntryDef3743); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getTagEntryDefAccess().getRightSquareBracketKeyword_1_3());
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1750:3: ( ( (lv_typedEntry_6_0= ':' ) ) ( ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) ) ) )?
            int alt40=2;
            int LA40_0 = input.LA(1);

            if ( (LA40_0==21) ) {
                alt40=1;
            }
            switch (alt40) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1750:4: ( (lv_typedEntry_6_0= ':' ) ) ( ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1750:4: ( (lv_typedEntry_6_0= ':' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1751:1: (lv_typedEntry_6_0= ':' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1751:1: (lv_typedEntry_6_0= ':' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1752:3: lv_typedEntry_6_0= ':'
                    {
                    lv_typedEntry_6_0=(Token)match(input,21,FOLLOW_21_in_ruleTagEntryDef3764); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_typedEntry_6_0, grammarAccess.getTagEntryDefAccess().getTypedEntryColonKeyword_2_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTagEntryDefRule());
                      	        }
                             		setWithLastConsumed(current, "typedEntry", true, ":");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1765:2: ( ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1766:1: ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1766:1: ( (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1767:1: (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1767:1: (lv_type_7_1= 'int' | lv_type_7_2= 'string' | lv_type_7_3= 'boolean' | lv_type_7_4= 'date' | lv_type_7_5= 'float' )
                    int alt39=5;
                    switch ( input.LA(1) ) {
                    case 41:
                        {
                        alt39=1;
                        }
                        break;
                    case 42:
                        {
                        alt39=2;
                        }
                        break;
                    case 43:
                        {
                        alt39=3;
                        }
                        break;
                    case 44:
                        {
                        alt39=4;
                        }
                        break;
                    case 45:
                        {
                        alt39=5;
                        }
                        break;
                    default:
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 39, 0, input);

                        throw nvae;
                    }

                    switch (alt39) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1768:3: lv_type_7_1= 'int'
                            {
                            lv_type_7_1=(Token)match(input,41,FOLLOW_41_in_ruleTagEntryDef3797); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_7_1, grammarAccess.getTagEntryDefAccess().getTypeIntKeyword_2_1_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getTagEntryDefRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_7_1, null);
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1780:8: lv_type_7_2= 'string'
                            {
                            lv_type_7_2=(Token)match(input,42,FOLLOW_42_in_ruleTagEntryDef3826); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_7_2, grammarAccess.getTagEntryDefAccess().getTypeStringKeyword_2_1_0_1());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getTagEntryDefRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_7_2, null);
                              	    
                            }

                            }
                            break;
                        case 3 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1792:8: lv_type_7_3= 'boolean'
                            {
                            lv_type_7_3=(Token)match(input,43,FOLLOW_43_in_ruleTagEntryDef3855); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_7_3, grammarAccess.getTagEntryDefAccess().getTypeBooleanKeyword_2_1_0_2());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getTagEntryDefRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_7_3, null);
                              	    
                            }

                            }
                            break;
                        case 4 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1804:8: lv_type_7_4= 'date'
                            {
                            lv_type_7_4=(Token)match(input,44,FOLLOW_44_in_ruleTagEntryDef3884); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_7_4, grammarAccess.getTagEntryDefAccess().getTypeDateKeyword_2_1_0_3());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getTagEntryDefRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_7_4, null);
                              	    
                            }

                            }
                            break;
                        case 5 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1816:8: lv_type_7_5= 'float'
                            {
                            lv_type_7_5=(Token)match(input,45,FOLLOW_45_in_ruleTagEntryDef3913); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_type_7_5, grammarAccess.getTagEntryDefAccess().getTypeFloatKeyword_2_1_0_4());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getTagEntryDefRule());
                              	        }
                                     		setWithLastConsumed(current, "type", lv_type_7_5, null);
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1831:4: (otherlv_8= '=' ( ( (lv_value_9_0= ruleXExpression ) ) | (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) ) ) )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==17) ) {
                alt42=1;
            }
            switch (alt42) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1831:6: otherlv_8= '=' ( ( (lv_value_9_0= ruleXExpression ) ) | (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) ) )
                    {
                    otherlv_8=(Token)match(input,17,FOLLOW_17_in_ruleTagEntryDef3944); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getTagEntryDefAccess().getEqualsSignKeyword_3_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1835:1: ( ( (lv_value_9_0= ruleXExpression ) ) | (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) ) )
                    int alt41=2;
                    int LA41_0 = input.LA(1);

                    if ( ((LA41_0>=RULE_STRING && LA41_0<=RULE_INT)||LA41_0==13||LA41_0==19||LA41_0==36||LA41_0==80||LA41_0==91||(LA41_0>=94 && LA41_0<=95)||LA41_0==100||LA41_0==106||LA41_0==108||(LA41_0>=111 && LA41_0<=113)||LA41_0==117||(LA41_0>=119 && LA41_0<=125)) ) {
                        alt41=1;
                    }
                    else if ( (LA41_0==46) ) {
                        alt41=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 41, 0, input);

                        throw nvae;
                    }
                    switch (alt41) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1835:2: ( (lv_value_9_0= ruleXExpression ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1835:2: ( (lv_value_9_0= ruleXExpression ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1836:1: (lv_value_9_0= ruleXExpression )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1836:1: (lv_value_9_0= ruleXExpression )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1837:3: lv_value_9_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getTagEntryDefAccess().getValueXExpressionParserRuleCall_3_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleTagEntryDef3966);
                            lv_value_9_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getTagEntryDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"value",
                                      		lv_value_9_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1854:6: (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1854:6: (otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1854:8: otherlv_10= '@' ( (lv_ref_11_0= ruleXReferenceExpression ) )
                            {
                            otherlv_10=(Token)match(input,46,FOLLOW_46_in_ruleTagEntryDef3985); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_10, grammarAccess.getTagEntryDefAccess().getCommercialAtKeyword_3_1_1_0());
                                  
                            }
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1858:1: ( (lv_ref_11_0= ruleXReferenceExpression ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1859:1: (lv_ref_11_0= ruleXReferenceExpression )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1859:1: (lv_ref_11_0= ruleXReferenceExpression )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1860:3: lv_ref_11_0= ruleXReferenceExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getTagEntryDefAccess().getRefXReferenceExpressionParserRuleCall_3_1_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXReferenceExpression_in_ruleTagEntryDef4006);
                            lv_ref_11_0=ruleXReferenceExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getTagEntryDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"ref",
                                      		lv_ref_11_0, 
                                      		"XReferenceExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }


                            }
                            break;

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTagEntryDef"


    // $ANTLR start "entryRuleElementDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1884:1: entryRuleElementDef returns [EObject current=null] : iv_ruleElementDef= ruleElementDef EOF ;
    public final EObject entryRuleElementDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElementDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1885:2: (iv_ruleElementDef= ruleElementDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1886:2: iv_ruleElementDef= ruleElementDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getElementDefRule()); 
            }
            pushFollow(FOLLOW_ruleElementDef_in_entryRuleElementDef4046);
            iv_ruleElementDef=ruleElementDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleElementDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleElementDef4056); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElementDef"


    // $ANTLR start "ruleElementDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1893:1: ruleElementDef returns [EObject current=null] : (this_EntityDef_0= ruleEntityDef | this_RelationDef_1= ruleRelationDef ) ;
    public final EObject ruleElementDef() throws RecognitionException {
        EObject current = null;

        EObject this_EntityDef_0 = null;

        EObject this_RelationDef_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1896:28: ( (this_EntityDef_0= ruleEntityDef | this_RelationDef_1= ruleRelationDef ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1897:1: (this_EntityDef_0= ruleEntityDef | this_RelationDef_1= ruleRelationDef )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1897:1: (this_EntityDef_0= ruleEntityDef | this_RelationDef_1= ruleRelationDef )
            int alt43=2;
            int LA43_0 = input.LA(1);

            if ( (LA43_0==47) ) {
                alt43=1;
            }
            else if ( (LA43_0==51) ) {
                alt43=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 43, 0, input);

                throw nvae;
            }
            switch (alt43) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1898:5: this_EntityDef_0= ruleEntityDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getElementDefAccess().getEntityDefParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleEntityDef_in_ruleElementDef4103);
                    this_EntityDef_0=ruleEntityDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_EntityDef_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1908:5: this_RelationDef_1= ruleRelationDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getElementDefAccess().getRelationDefParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleRelationDef_in_ruleElementDef4130);
                    this_RelationDef_1=ruleRelationDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_RelationDef_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElementDef"


    // $ANTLR start "entryRuleEntityDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1924:1: entryRuleEntityDef returns [EObject current=null] : iv_ruleEntityDef= ruleEntityDef EOF ;
    public final EObject entryRuleEntityDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntityDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1925:2: (iv_ruleEntityDef= ruleEntityDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1926:2: iv_ruleEntityDef= ruleEntityDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEntityDefRule()); 
            }
            pushFollow(FOLLOW_ruleEntityDef_in_entryRuleEntityDef4165);
            iv_ruleEntityDef=ruleEntityDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEntityDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntityDef4175); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEntityDef"


    // $ANTLR start "ruleEntityDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1933:1: ruleEntityDef returns [EObject current=null] : ( () otherlv_1= 'entity' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' ) ) ;
    public final EObject ruleEntityDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token lv_inherited_3_0=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token lv_text_8_0=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token lv_smallImage_12_0=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token lv_largeImage_15_0=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        Token otherlv_22=null;
        Token otherlv_24=null;
        Token otherlv_25=null;
        Token otherlv_27=null;
        Token otherlv_28=null;
        Token lv_helper_29_2=null;
        Token otherlv_32=null;
        EObject lv_figureParams_18_0 = null;

        EObject lv_figureParams_20_0 = null;

        EObject lv_figure_23_0 = null;

        EObject lv_view_26_0 = null;

        AntlrDatatypeRuleToken lv_helper_29_1 = null;

        EObject lv_policies_30_0 = null;

        EObject lv_tags_31_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1936:28: ( ( () otherlv_1= 'entity' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1937:1: ( () otherlv_1= 'entity' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1937:1: ( () otherlv_1= 'entity' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1937:2: () otherlv_1= 'entity' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1937:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1938:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getEntityDefAccess().getEntityDefAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,47,FOLLOW_47_in_ruleEntityDef4221); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getEntityDefAccess().getEntityKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1947:1: ( (lv_name_2_0= RULE_ID ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1948:1: (lv_name_2_0= RULE_ID )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1948:1: (lv_name_2_0= RULE_ID )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1949:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntityDef4238); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_2_0, grammarAccess.getEntityDefAccess().getNameIDTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getEntityDefRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1965:2: ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )?
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( (LA44_0==48) ) {
                alt44=1;
            }
            switch (alt44) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1965:3: ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1965:3: ( (lv_inherited_3_0= 'extends' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1966:1: (lv_inherited_3_0= 'extends' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1966:1: (lv_inherited_3_0= 'extends' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1967:3: lv_inherited_3_0= 'extends'
                    {
                    lv_inherited_3_0=(Token)match(input,48,FOLLOW_48_in_ruleEntityDef4262); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_inherited_3_0, grammarAccess.getEntityDefAccess().getInheritedExtendsKeyword_3_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getEntityDefRule());
                      	        }
                             		setWithLastConsumed(current, "inherited", true, "extends");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1980:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1981:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1981:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1982:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getEntityDefRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getEntityDefAccess().getSuperElementEntityDefCrossReference_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleEntityDef4298);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,21,FOLLOW_21_in_ruleEntityDef4312); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getEntityDefAccess().getColonKeyword_4());
                  
            }
            otherlv_6=(Token)match(input,31,FOLLOW_31_in_ruleEntityDef4324); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getEntityDefAccess().getLabelKeyword_5());
                  
            }
            otherlv_7=(Token)match(input,17,FOLLOW_17_in_ruleEntityDef4336); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getEntityDefAccess().getEqualsSignKeyword_6());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2007:1: ( (lv_text_8_0= RULE_STRING ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2008:1: (lv_text_8_0= RULE_STRING )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2008:1: (lv_text_8_0= RULE_STRING )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2009:3: lv_text_8_0= RULE_STRING
            {
            lv_text_8_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEntityDef4353); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_text_8_0, grammarAccess.getEntityDefAccess().getTextSTRINGTerminalRuleCall_7_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getEntityDefRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"text",
                      		lv_text_8_0, 
                      		"STRING");
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2025:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2027:1: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2027:1: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2028:2: ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* )
            {
            getUnorderedGroupHelper().enter(grammarAccess.getEntityDefAccess().getUnorderedGroup_8());
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2031:2: ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2032:3: ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )*
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2032:3: ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )*
            loop49:
            do {
                int alt49=8;
                int LA49_0 = input.LA(1);

                if ( LA49_0 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 0) ) {
                    alt49=1;
                }
                else if ( LA49_0 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 1) ) {
                    alt49=2;
                }
                else if ( LA49_0 ==49 && getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 2) ) {
                    alt49=3;
                }
                else if ( LA49_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 3) ) {
                    alt49=4;
                }
                else if ( LA49_0 ==50 && getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 4) ) {
                    alt49=5;
                }
                else if ( LA49_0 ==52 && getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 5) ) {
                    alt49=6;
                }
                else if ( ( LA49_0 >=RULE_STRING && LA49_0<=RULE_ID || LA49_0 >=39 && LA49_0<=40 ) && getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 6) ) {
                    alt49=7;
                }


                switch (alt49) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2034:4: ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2034:4: ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2035:5: {...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 0) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 0)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2035:106: ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2036:6: ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 0);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2039:6: ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2039:7: {...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2039:16: (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2039:18: otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) )
            	    {
            	    otherlv_10=(Token)match(input,24,FOLLOW_24_in_ruleEntityDef4416); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_10, grammarAccess.getEntityDefAccess().getSmallimageKeyword_8_0_0());
            	          
            	    }
            	    otherlv_11=(Token)match(input,17,FOLLOW_17_in_ruleEntityDef4428); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_11, grammarAccess.getEntityDefAccess().getEqualsSignKeyword_8_0_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2047:1: ( (lv_smallImage_12_0= RULE_STRING ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2048:1: (lv_smallImage_12_0= RULE_STRING )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2048:1: (lv_smallImage_12_0= RULE_STRING )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2049:3: lv_smallImage_12_0= RULE_STRING
            	    {
            	    lv_smallImage_12_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEntityDef4445); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			newLeafNode(lv_smallImage_12_0, grammarAccess.getEntityDefAccess().getSmallImageSTRINGTerminalRuleCall_8_0_2_0()); 
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getEntityDefRule());
            	      	        }
            	             		setWithLastConsumed(
            	             			current, 
            	             			"smallImage",
            	              		lv_smallImage_12_0, 
            	              		"STRING");
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2072:4: ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2072:4: ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2073:5: {...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 1) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 1)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2073:106: ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2074:6: ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 1);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2077:6: ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2077:7: {...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2077:16: (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2077:18: otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) )
            	    {
            	    otherlv_13=(Token)match(input,25,FOLLOW_25_in_ruleEntityDef4518); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_13, grammarAccess.getEntityDefAccess().getLargeimageKeyword_8_1_0());
            	          
            	    }
            	    otherlv_14=(Token)match(input,17,FOLLOW_17_in_ruleEntityDef4530); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_14, grammarAccess.getEntityDefAccess().getEqualsSignKeyword_8_1_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2085:1: ( (lv_largeImage_15_0= RULE_STRING ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2086:1: (lv_largeImage_15_0= RULE_STRING )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2086:1: (lv_largeImage_15_0= RULE_STRING )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2087:3: lv_largeImage_15_0= RULE_STRING
            	    {
            	    lv_largeImage_15_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEntityDef4547); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			newLeafNode(lv_largeImage_15_0, grammarAccess.getEntityDefAccess().getLargeImageSTRINGTerminalRuleCall_8_1_2_0()); 
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getEntityDefRule());
            	      	        }
            	             		setWithLastConsumed(
            	             			current, 
            	             			"largeImage",
            	              		lv_largeImage_15_0, 
            	              		"STRING");
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2110:4: ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2110:4: ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2111:5: {...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 2) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 2)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2111:106: ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2112:6: ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 2);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2115:6: ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2115:7: {...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2115:16: (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2115:18: otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) )
            	    {
            	    otherlv_16=(Token)match(input,49,FOLLOW_49_in_ruleEntityDef4620); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_16, grammarAccess.getEntityDefAccess().getFigureKeyword_8_2_0());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2119:1: (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )?
            	    int alt46=2;
            	    int LA46_0 = input.LA(1);

            	    if ( (LA46_0==36) ) {
            	        alt46=1;
            	    }
            	    switch (alt46) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2119:3: otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']'
            	            {
            	            otherlv_17=(Token)match(input,36,FOLLOW_36_in_ruleEntityDef4633); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_17, grammarAccess.getEntityDefAccess().getLeftSquareBracketKeyword_8_2_1_0());
            	                  
            	            }
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2123:1: ( (lv_figureParams_18_0= ruleElementFigureParameter ) )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2124:1: (lv_figureParams_18_0= ruleElementFigureParameter )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2124:1: (lv_figureParams_18_0= ruleElementFigureParameter )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2125:3: lv_figureParams_18_0= ruleElementFigureParameter
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getEntityDefAccess().getFigureParamsElementFigureParameterParserRuleCall_8_2_1_1_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleElementFigureParameter_in_ruleEntityDef4654);
            	            lv_figureParams_18_0=ruleElementFigureParameter();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getEntityDefRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"figureParams",
            	                      		lv_figureParams_18_0, 
            	                      		"ElementFigureParameter");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2141:2: (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )*
            	            loop45:
            	            do {
            	                int alt45=2;
            	                int LA45_0 = input.LA(1);

            	                if ( (LA45_0==37) ) {
            	                    alt45=1;
            	                }


            	                switch (alt45) {
            	            	case 1 :
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2141:4: otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) )
            	            	    {
            	            	    otherlv_19=(Token)match(input,37,FOLLOW_37_in_ruleEntityDef4667); if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	          	newLeafNode(otherlv_19, grammarAccess.getEntityDefAccess().getCommaKeyword_8_2_1_2_0());
            	            	          
            	            	    }
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2145:1: ( (lv_figureParams_20_0= ruleElementFigureParameter ) )
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2146:1: (lv_figureParams_20_0= ruleElementFigureParameter )
            	            	    {
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2146:1: (lv_figureParams_20_0= ruleElementFigureParameter )
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2147:3: lv_figureParams_20_0= ruleElementFigureParameter
            	            	    {
            	            	    if ( state.backtracking==0 ) {
            	            	       
            	            	      	        newCompositeNode(grammarAccess.getEntityDefAccess().getFigureParamsElementFigureParameterParserRuleCall_8_2_1_2_1_0()); 
            	            	      	    
            	            	    }
            	            	    pushFollow(FOLLOW_ruleElementFigureParameter_in_ruleEntityDef4688);
            	            	    lv_figureParams_20_0=ruleElementFigureParameter();

            	            	    state._fsp--;
            	            	    if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	      	        if (current==null) {
            	            	      	            current = createModelElementForParent(grammarAccess.getEntityDefRule());
            	            	      	        }
            	            	             		add(
            	            	             			current, 
            	            	             			"figureParams",
            	            	              		lv_figureParams_20_0, 
            	            	              		"ElementFigureParameter");
            	            	      	        afterParserOrEnumRuleCall();
            	            	      	    
            	            	    }

            	            	    }


            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop45;
            	                }
            	            } while (true);

            	            otherlv_21=(Token)match(input,38,FOLLOW_38_in_ruleEntityDef4702); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_21, grammarAccess.getEntityDefAccess().getRightSquareBracketKeyword_8_2_1_3());
            	                  
            	            }

            	            }
            	            break;

            	    }

            	    otherlv_22=(Token)match(input,17,FOLLOW_17_in_ruleEntityDef4716); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_22, grammarAccess.getEntityDefAccess().getEqualsSignKeyword_8_2_2());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2171:1: ( (lv_figure_23_0= ruleXFigureExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2172:1: (lv_figure_23_0= ruleXFigureExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2172:1: (lv_figure_23_0= ruleXFigureExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2173:3: lv_figure_23_0= ruleXFigureExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEntityDefAccess().getFigureXFigureExpressionParserRuleCall_8_2_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXFigureExpression_in_ruleEntityDef4737);
            	    lv_figure_23_0=ruleXFigureExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEntityDefRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"figure",
            	              		lv_figure_23_0, 
            	              		"XFigureExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2196:4: ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2196:4: ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2197:5: {...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 3) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 3)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2197:106: ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2198:6: ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 3);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2201:6: ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2201:7: {...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2201:16: (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2201:18: otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) )
            	    {
            	    otherlv_24=(Token)match(input,35,FOLLOW_35_in_ruleEntityDef4805); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_24, grammarAccess.getEntityDefAccess().getViewKeyword_8_3_0());
            	          
            	    }
            	    otherlv_25=(Token)match(input,17,FOLLOW_17_in_ruleEntityDef4817); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_25, grammarAccess.getEntityDefAccess().getEqualsSignKeyword_8_3_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2209:1: ( (lv_view_26_0= ruleXViewExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2210:1: (lv_view_26_0= ruleXViewExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2210:1: (lv_view_26_0= ruleXViewExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2211:3: lv_view_26_0= ruleXViewExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEntityDefAccess().getViewXViewExpressionParserRuleCall_8_3_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXViewExpression_in_ruleEntityDef4838);
            	    lv_view_26_0=ruleXViewExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEntityDefRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"view",
            	              		lv_view_26_0, 
            	              		"XViewExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 5 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2234:4: ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2234:4: ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2235:5: {...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 4) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 4)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2235:106: ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2236:6: ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 4);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2239:6: ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2239:7: {...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2239:16: (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2239:18: otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) )
            	    {
            	    otherlv_27=(Token)match(input,50,FOLLOW_50_in_ruleEntityDef4906); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_27, grammarAccess.getEntityDefAccess().getHelperKeyword_8_4_0());
            	          
            	    }
            	    otherlv_28=(Token)match(input,17,FOLLOW_17_in_ruleEntityDef4918); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_28, grammarAccess.getEntityDefAccess().getEqualsSignKeyword_8_4_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2247:1: ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2248:1: ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2248:1: ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2249:1: (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2249:1: (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING )
            	    int alt47=2;
            	    int LA47_0 = input.LA(1);

            	    if ( (LA47_0==RULE_ID) ) {
            	        alt47=1;
            	    }
            	    else if ( (LA47_0==RULE_STRING) ) {
            	        alt47=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 47, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt47) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2250:3: lv_helper_29_1= ruleQualifiedName
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getEntityDefAccess().getHelperQualifiedNameParserRuleCall_8_4_2_0_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleQualifiedName_in_ruleEntityDef4941);
            	            lv_helper_29_1=ruleQualifiedName();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getEntityDefRule());
            	              	        }
            	                     		set(
            	                     			current, 
            	                     			"helper",
            	                      		lv_helper_29_1, 
            	                      		"QualifiedName");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2265:8: lv_helper_29_2= RULE_STRING
            	            {
            	            lv_helper_29_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEntityDef4956); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              			newLeafNode(lv_helper_29_2, grammarAccess.getEntityDefAccess().getHelperSTRINGTerminalRuleCall_8_4_2_0_1()); 
            	              		
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getEntityDefRule());
            	              	        }
            	                     		setWithLastConsumed(
            	                     			current, 
            	                     			"helper",
            	                      		lv_helper_29_2, 
            	                      		"STRING");
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 6 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2290:4: ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2290:4: ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2291:5: {...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 5) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 5)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2291:106: ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2292:6: ({...}? => ( (lv_policies_30_0= rulePolicies ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 5);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2295:6: ({...}? => ( (lv_policies_30_0= rulePolicies ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2295:7: {...}? => ( (lv_policies_30_0= rulePolicies ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2295:16: ( (lv_policies_30_0= rulePolicies ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2296:1: (lv_policies_30_0= rulePolicies )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2296:1: (lv_policies_30_0= rulePolicies )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2297:3: lv_policies_30_0= rulePolicies
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEntityDefAccess().getPoliciesPoliciesParserRuleCall_8_5_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_rulePolicies_in_ruleEntityDef5040);
            	    lv_policies_30_0=rulePolicies();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEntityDefRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"policies",
            	              		lv_policies_30_0, 
            	              		"Policies");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 7 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2320:4: ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2320:4: ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2321:5: {...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 6) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleEntityDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 6)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2321:106: ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2322:6: ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getEntityDefAccess().getUnorderedGroup_8(), 6);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2325:6: ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+
            	    int cnt48=0;
            	    loop48:
            	    do {
            	        int alt48=2;
            	        switch ( input.LA(1) ) {
            	        case 39:
            	            {
            	            int LA48_2 = input.LA(2);

            	            if ( ((true)) ) {
            	                alt48=1;
            	            }


            	            }
            	            break;
            	        case 40:
            	            {
            	            int LA48_3 = input.LA(2);

            	            if ( ((true)) ) {
            	                alt48=1;
            	            }


            	            }
            	            break;
            	        case RULE_ID:
            	            {
            	            int LA48_4 = input.LA(2);

            	            if ( ((true)) ) {
            	                alt48=1;
            	            }


            	            }
            	            break;
            	        case RULE_STRING:
            	            {
            	            int LA48_5 = input.LA(2);

            	            if ( ((true)) ) {
            	                alt48=1;
            	            }


            	            }
            	            break;

            	        }

            	        switch (alt48) {
            	    	case 1 :
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2325:7: {...}? => ( (lv_tags_31_0= ruleTagDef ) )
            	    	    {
            	    	    if ( !((true)) ) {
            	    	        if (state.backtracking>0) {state.failed=true; return current;}
            	    	        throw new FailedPredicateException(input, "ruleEntityDef", "true");
            	    	    }
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2325:16: ( (lv_tags_31_0= ruleTagDef ) )
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2326:1: (lv_tags_31_0= ruleTagDef )
            	    	    {
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2326:1: (lv_tags_31_0= ruleTagDef )
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2327:3: lv_tags_31_0= ruleTagDef
            	    	    {
            	    	    if ( state.backtracking==0 ) {
            	    	       
            	    	      	        newCompositeNode(grammarAccess.getEntityDefAccess().getTagsTagDefParserRuleCall_8_6_0()); 
            	    	      	    
            	    	    }
            	    	    pushFollow(FOLLOW_ruleTagDef_in_ruleEntityDef5115);
            	    	    lv_tags_31_0=ruleTagDef();

            	    	    state._fsp--;
            	    	    if (state.failed) return current;
            	    	    if ( state.backtracking==0 ) {

            	    	      	        if (current==null) {
            	    	      	            current = createModelElementForParent(grammarAccess.getEntityDefRule());
            	    	      	        }
            	    	             		add(
            	    	             			current, 
            	    	             			"tags",
            	    	              		lv_tags_31_0, 
            	    	              		"TagDef");
            	    	      	        afterParserOrEnumRuleCall();
            	    	      	    
            	    	    }

            	    	    }


            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt48 >= 1 ) break loop48;
            	    	    if (state.backtracking>0) {state.failed=true; return current;}
            	                EarlyExitException eee =
            	                    new EarlyExitException(48, input);
            	                throw eee;
            	        }
            	        cnt48++;
            	    } while (true);

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop49;
                }
            } while (true);


            }


            }

            getUnorderedGroupHelper().leave(grammarAccess.getEntityDefAccess().getUnorderedGroup_8());

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2357:2: ( ( 'end' )=>otherlv_32= 'end' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2357:3: ( 'end' )=>otherlv_32= 'end'
            {
            otherlv_32=(Token)match(input,29,FOLLOW_29_in_ruleEntityDef5176); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_32, grammarAccess.getEntityDefAccess().getEndKeyword_9());
                  
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEntityDef"


    // $ANTLR start "entryRuleRelationDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2370:1: entryRuleRelationDef returns [EObject current=null] : iv_ruleRelationDef= ruleRelationDef EOF ;
    public final EObject entryRuleRelationDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRelationDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2371:2: (iv_ruleRelationDef= ruleRelationDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2372:2: iv_ruleRelationDef= ruleRelationDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRelationDefRule()); 
            }
            pushFollow(FOLLOW_ruleRelationDef_in_entryRuleRelationDef5213);
            iv_ruleRelationDef=ruleRelationDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRelationDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleRelationDef5223); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRelationDef"


    // $ANTLR start "ruleRelationDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2379:1: ruleRelationDef returns [EObject current=null] : ( () otherlv_1= 'relation' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' ) ) ;
    public final EObject ruleRelationDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token lv_inherited_3_0=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token lv_text_8_0=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token lv_smallImage_12_0=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token lv_largeImage_15_0=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        Token otherlv_22=null;
        Token otherlv_24=null;
        Token otherlv_25=null;
        Token otherlv_27=null;
        Token otherlv_28=null;
        Token lv_helper_29_2=null;
        Token otherlv_32=null;
        EObject lv_figureParams_18_0 = null;

        EObject lv_figureParams_20_0 = null;

        EObject lv_figure_23_0 = null;

        EObject lv_view_26_0 = null;

        AntlrDatatypeRuleToken lv_helper_29_1 = null;

        EObject lv_policies_30_0 = null;

        EObject lv_tags_31_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2382:28: ( ( () otherlv_1= 'relation' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2383:1: ( () otherlv_1= 'relation' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2383:1: ( () otherlv_1= 'relation' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2383:2: () otherlv_1= 'relation' ( (lv_name_2_0= RULE_ID ) ) ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )? otherlv_5= ':' otherlv_6= 'label' otherlv_7= '=' ( (lv_text_8_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_32= 'end' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2383:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2384:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getRelationDefAccess().getRelationDefAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,51,FOLLOW_51_in_ruleRelationDef5269); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getRelationDefAccess().getRelationKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2393:1: ( (lv_name_2_0= RULE_ID ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2394:1: (lv_name_2_0= RULE_ID )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2394:1: (lv_name_2_0= RULE_ID )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2395:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRelationDef5286); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_2_0, grammarAccess.getRelationDefAccess().getNameIDTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getRelationDefRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2411:2: ( ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )?
            int alt50=2;
            int LA50_0 = input.LA(1);

            if ( (LA50_0==48) ) {
                alt50=1;
            }
            switch (alt50) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2411:3: ( (lv_inherited_3_0= 'extends' ) ) ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2411:3: ( (lv_inherited_3_0= 'extends' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2412:1: (lv_inherited_3_0= 'extends' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2412:1: (lv_inherited_3_0= 'extends' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2413:3: lv_inherited_3_0= 'extends'
                    {
                    lv_inherited_3_0=(Token)match(input,48,FOLLOW_48_in_ruleRelationDef5310); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_inherited_3_0, grammarAccess.getRelationDefAccess().getInheritedExtendsKeyword_3_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getRelationDefRule());
                      	        }
                             		setWithLastConsumed(current, "inherited", true, "extends");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2426:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2427:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2427:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2428:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getRelationDefRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getRelationDefAccess().getSuperElementRelationDefCrossReference_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleRelationDef5346);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,21,FOLLOW_21_in_ruleRelationDef5360); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getRelationDefAccess().getColonKeyword_4());
                  
            }
            otherlv_6=(Token)match(input,31,FOLLOW_31_in_ruleRelationDef5372); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getRelationDefAccess().getLabelKeyword_5());
                  
            }
            otherlv_7=(Token)match(input,17,FOLLOW_17_in_ruleRelationDef5384); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getRelationDefAccess().getEqualsSignKeyword_6());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2453:1: ( (lv_text_8_0= RULE_STRING ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2454:1: (lv_text_8_0= RULE_STRING )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2454:1: (lv_text_8_0= RULE_STRING )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2455:3: lv_text_8_0= RULE_STRING
            {
            lv_text_8_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRelationDef5401); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_text_8_0, grammarAccess.getRelationDefAccess().getTextSTRINGTerminalRuleCall_7_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getRelationDefRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"text",
                      		lv_text_8_0, 
                      		"STRING");
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2471:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2473:1: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2473:1: ( ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2474:2: ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* )
            {
            getUnorderedGroupHelper().enter(grammarAccess.getRelationDefAccess().getUnorderedGroup_8());
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2477:2: ( ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2478:3: ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )*
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2478:3: ( ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) ) )*
            loop55:
            do {
                int alt55=8;
                int LA55_0 = input.LA(1);

                if ( LA55_0 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 0) ) {
                    alt55=1;
                }
                else if ( LA55_0 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 1) ) {
                    alt55=2;
                }
                else if ( LA55_0 ==49 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 2) ) {
                    alt55=3;
                }
                else if ( LA55_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 3) ) {
                    alt55=4;
                }
                else if ( LA55_0 ==50 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 4) ) {
                    alt55=5;
                }
                else if ( LA55_0 ==52 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 5) ) {
                    alt55=6;
                }
                else if ( ( LA55_0 >=RULE_STRING && LA55_0<=RULE_ID || LA55_0 >=39 && LA55_0<=40 ) && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 6) ) {
                    alt55=7;
                }


                switch (alt55) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2480:4: ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2480:4: ({...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2481:5: {...}? => ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 0) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 0)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2481:108: ( ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2482:6: ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 0);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2485:6: ({...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2485:7: {...}? => (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2485:16: (otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2485:18: otherlv_10= 'smallimage' otherlv_11= '=' ( (lv_smallImage_12_0= RULE_STRING ) )
            	    {
            	    otherlv_10=(Token)match(input,24,FOLLOW_24_in_ruleRelationDef5464); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_10, grammarAccess.getRelationDefAccess().getSmallimageKeyword_8_0_0());
            	          
            	    }
            	    otherlv_11=(Token)match(input,17,FOLLOW_17_in_ruleRelationDef5476); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_11, grammarAccess.getRelationDefAccess().getEqualsSignKeyword_8_0_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2493:1: ( (lv_smallImage_12_0= RULE_STRING ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2494:1: (lv_smallImage_12_0= RULE_STRING )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2494:1: (lv_smallImage_12_0= RULE_STRING )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2495:3: lv_smallImage_12_0= RULE_STRING
            	    {
            	    lv_smallImage_12_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRelationDef5493); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			newLeafNode(lv_smallImage_12_0, grammarAccess.getRelationDefAccess().getSmallImageSTRINGTerminalRuleCall_8_0_2_0()); 
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getRelationDefRule());
            	      	        }
            	             		setWithLastConsumed(
            	             			current, 
            	             			"smallImage",
            	              		lv_smallImage_12_0, 
            	              		"STRING");
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2518:4: ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2518:4: ({...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2519:5: {...}? => ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 1) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 1)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2519:108: ( ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2520:6: ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 1);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2523:6: ({...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2523:7: {...}? => (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2523:16: (otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2523:18: otherlv_13= 'largeimage' otherlv_14= '=' ( (lv_largeImage_15_0= RULE_STRING ) )
            	    {
            	    otherlv_13=(Token)match(input,25,FOLLOW_25_in_ruleRelationDef5566); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_13, grammarAccess.getRelationDefAccess().getLargeimageKeyword_8_1_0());
            	          
            	    }
            	    otherlv_14=(Token)match(input,17,FOLLOW_17_in_ruleRelationDef5578); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_14, grammarAccess.getRelationDefAccess().getEqualsSignKeyword_8_1_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2531:1: ( (lv_largeImage_15_0= RULE_STRING ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2532:1: (lv_largeImage_15_0= RULE_STRING )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2532:1: (lv_largeImage_15_0= RULE_STRING )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2533:3: lv_largeImage_15_0= RULE_STRING
            	    {
            	    lv_largeImage_15_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRelationDef5595); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			newLeafNode(lv_largeImage_15_0, grammarAccess.getRelationDefAccess().getLargeImageSTRINGTerminalRuleCall_8_1_2_0()); 
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getRelationDefRule());
            	      	        }
            	             		setWithLastConsumed(
            	             			current, 
            	             			"largeImage",
            	              		lv_largeImage_15_0, 
            	              		"STRING");
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2556:4: ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2556:4: ({...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2557:5: {...}? => ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 2) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 2)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2557:108: ( ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2558:6: ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 2);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2561:6: ({...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2561:7: {...}? => (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2561:16: (otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2561:18: otherlv_16= 'figure' (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )? otherlv_22= '=' ( (lv_figure_23_0= ruleXFigureExpression ) )
            	    {
            	    otherlv_16=(Token)match(input,49,FOLLOW_49_in_ruleRelationDef5668); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_16, grammarAccess.getRelationDefAccess().getFigureKeyword_8_2_0());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2565:1: (otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']' )?
            	    int alt52=2;
            	    int LA52_0 = input.LA(1);

            	    if ( (LA52_0==36) ) {
            	        alt52=1;
            	    }
            	    switch (alt52) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2565:3: otherlv_17= '[' ( (lv_figureParams_18_0= ruleElementFigureParameter ) ) (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )* otherlv_21= ']'
            	            {
            	            otherlv_17=(Token)match(input,36,FOLLOW_36_in_ruleRelationDef5681); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_17, grammarAccess.getRelationDefAccess().getLeftSquareBracketKeyword_8_2_1_0());
            	                  
            	            }
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2569:1: ( (lv_figureParams_18_0= ruleElementFigureParameter ) )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2570:1: (lv_figureParams_18_0= ruleElementFigureParameter )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2570:1: (lv_figureParams_18_0= ruleElementFigureParameter )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2571:3: lv_figureParams_18_0= ruleElementFigureParameter
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getRelationDefAccess().getFigureParamsElementFigureParameterParserRuleCall_8_2_1_1_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleElementFigureParameter_in_ruleRelationDef5702);
            	            lv_figureParams_18_0=ruleElementFigureParameter();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getRelationDefRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"figureParams",
            	                      		lv_figureParams_18_0, 
            	                      		"ElementFigureParameter");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2587:2: (otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) ) )*
            	            loop51:
            	            do {
            	                int alt51=2;
            	                int LA51_0 = input.LA(1);

            	                if ( (LA51_0==37) ) {
            	                    alt51=1;
            	                }


            	                switch (alt51) {
            	            	case 1 :
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2587:4: otherlv_19= ',' ( (lv_figureParams_20_0= ruleElementFigureParameter ) )
            	            	    {
            	            	    otherlv_19=(Token)match(input,37,FOLLOW_37_in_ruleRelationDef5715); if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	          	newLeafNode(otherlv_19, grammarAccess.getRelationDefAccess().getCommaKeyword_8_2_1_2_0());
            	            	          
            	            	    }
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2591:1: ( (lv_figureParams_20_0= ruleElementFigureParameter ) )
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2592:1: (lv_figureParams_20_0= ruleElementFigureParameter )
            	            	    {
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2592:1: (lv_figureParams_20_0= ruleElementFigureParameter )
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2593:3: lv_figureParams_20_0= ruleElementFigureParameter
            	            	    {
            	            	    if ( state.backtracking==0 ) {
            	            	       
            	            	      	        newCompositeNode(grammarAccess.getRelationDefAccess().getFigureParamsElementFigureParameterParserRuleCall_8_2_1_2_1_0()); 
            	            	      	    
            	            	    }
            	            	    pushFollow(FOLLOW_ruleElementFigureParameter_in_ruleRelationDef5736);
            	            	    lv_figureParams_20_0=ruleElementFigureParameter();

            	            	    state._fsp--;
            	            	    if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	      	        if (current==null) {
            	            	      	            current = createModelElementForParent(grammarAccess.getRelationDefRule());
            	            	      	        }
            	            	             		add(
            	            	             			current, 
            	            	             			"figureParams",
            	            	              		lv_figureParams_20_0, 
            	            	              		"ElementFigureParameter");
            	            	      	        afterParserOrEnumRuleCall();
            	            	      	    
            	            	    }

            	            	    }


            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop51;
            	                }
            	            } while (true);

            	            otherlv_21=(Token)match(input,38,FOLLOW_38_in_ruleRelationDef5750); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_21, grammarAccess.getRelationDefAccess().getRightSquareBracketKeyword_8_2_1_3());
            	                  
            	            }

            	            }
            	            break;

            	    }

            	    otherlv_22=(Token)match(input,17,FOLLOW_17_in_ruleRelationDef5764); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_22, grammarAccess.getRelationDefAccess().getEqualsSignKeyword_8_2_2());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2617:1: ( (lv_figure_23_0= ruleXFigureExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2618:1: (lv_figure_23_0= ruleXFigureExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2618:1: (lv_figure_23_0= ruleXFigureExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2619:3: lv_figure_23_0= ruleXFigureExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getRelationDefAccess().getFigureXFigureExpressionParserRuleCall_8_2_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXFigureExpression_in_ruleRelationDef5785);
            	    lv_figure_23_0=ruleXFigureExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getRelationDefRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"figure",
            	              		lv_figure_23_0, 
            	              		"XFigureExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2642:4: ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2642:4: ({...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2643:5: {...}? => ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 3) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 3)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2643:108: ( ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2644:6: ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 3);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2647:6: ({...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2647:7: {...}? => (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2647:16: (otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2647:18: otherlv_24= 'view' otherlv_25= '=' ( (lv_view_26_0= ruleXViewExpression ) )
            	    {
            	    otherlv_24=(Token)match(input,35,FOLLOW_35_in_ruleRelationDef5853); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_24, grammarAccess.getRelationDefAccess().getViewKeyword_8_3_0());
            	          
            	    }
            	    otherlv_25=(Token)match(input,17,FOLLOW_17_in_ruleRelationDef5865); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_25, grammarAccess.getRelationDefAccess().getEqualsSignKeyword_8_3_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2655:1: ( (lv_view_26_0= ruleXViewExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2656:1: (lv_view_26_0= ruleXViewExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2656:1: (lv_view_26_0= ruleXViewExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2657:3: lv_view_26_0= ruleXViewExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getRelationDefAccess().getViewXViewExpressionParserRuleCall_8_3_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXViewExpression_in_ruleRelationDef5886);
            	    lv_view_26_0=ruleXViewExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getRelationDefRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"view",
            	              		lv_view_26_0, 
            	              		"XViewExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 5 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2680:4: ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2680:4: ({...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2681:5: {...}? => ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 4) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 4)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2681:108: ( ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2682:6: ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 4);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2685:6: ({...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2685:7: {...}? => (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2685:16: (otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2685:18: otherlv_27= 'helper' otherlv_28= '=' ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) )
            	    {
            	    otherlv_27=(Token)match(input,50,FOLLOW_50_in_ruleRelationDef5954); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_27, grammarAccess.getRelationDefAccess().getHelperKeyword_8_4_0());
            	          
            	    }
            	    otherlv_28=(Token)match(input,17,FOLLOW_17_in_ruleRelationDef5966); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_28, grammarAccess.getRelationDefAccess().getEqualsSignKeyword_8_4_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2693:1: ( ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2694:1: ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2694:1: ( (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2695:1: (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2695:1: (lv_helper_29_1= ruleQualifiedName | lv_helper_29_2= RULE_STRING )
            	    int alt53=2;
            	    int LA53_0 = input.LA(1);

            	    if ( (LA53_0==RULE_ID) ) {
            	        alt53=1;
            	    }
            	    else if ( (LA53_0==RULE_STRING) ) {
            	        alt53=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 53, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt53) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2696:3: lv_helper_29_1= ruleQualifiedName
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getRelationDefAccess().getHelperQualifiedNameParserRuleCall_8_4_2_0_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleQualifiedName_in_ruleRelationDef5989);
            	            lv_helper_29_1=ruleQualifiedName();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getRelationDefRule());
            	              	        }
            	                     		set(
            	                     			current, 
            	                     			"helper",
            	                      		lv_helper_29_1, 
            	                      		"QualifiedName");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2711:8: lv_helper_29_2= RULE_STRING
            	            {
            	            lv_helper_29_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRelationDef6004); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              			newLeafNode(lv_helper_29_2, grammarAccess.getRelationDefAccess().getHelperSTRINGTerminalRuleCall_8_4_2_0_1()); 
            	              		
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getRelationDefRule());
            	              	        }
            	                     		setWithLastConsumed(
            	                     			current, 
            	                     			"helper",
            	                      		lv_helper_29_2, 
            	                      		"STRING");
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 6 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2736:4: ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2736:4: ({...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2737:5: {...}? => ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 5) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 5)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2737:108: ( ({...}? => ( (lv_policies_30_0= rulePolicies ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2738:6: ({...}? => ( (lv_policies_30_0= rulePolicies ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 5);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2741:6: ({...}? => ( (lv_policies_30_0= rulePolicies ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2741:7: {...}? => ( (lv_policies_30_0= rulePolicies ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2741:16: ( (lv_policies_30_0= rulePolicies ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2742:1: (lv_policies_30_0= rulePolicies )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2742:1: (lv_policies_30_0= rulePolicies )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2743:3: lv_policies_30_0= rulePolicies
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getRelationDefAccess().getPoliciesPoliciesParserRuleCall_8_5_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_rulePolicies_in_ruleRelationDef6088);
            	    lv_policies_30_0=rulePolicies();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getRelationDefRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"policies",
            	              		lv_policies_30_0, 
            	              		"Policies");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;
            	case 7 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2766:4: ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2766:4: ({...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2767:5: {...}? => ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 6) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleRelationDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 6)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2767:108: ( ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+ )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2768:6: ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getRelationDefAccess().getUnorderedGroup_8(), 6);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2771:6: ({...}? => ( (lv_tags_31_0= ruleTagDef ) ) )+
            	    int cnt54=0;
            	    loop54:
            	    do {
            	        int alt54=2;
            	        switch ( input.LA(1) ) {
            	        case 39:
            	            {
            	            int LA54_2 = input.LA(2);

            	            if ( ((true)) ) {
            	                alt54=1;
            	            }


            	            }
            	            break;
            	        case 40:
            	            {
            	            int LA54_3 = input.LA(2);

            	            if ( ((true)) ) {
            	                alt54=1;
            	            }


            	            }
            	            break;
            	        case RULE_ID:
            	            {
            	            int LA54_4 = input.LA(2);

            	            if ( ((true)) ) {
            	                alt54=1;
            	            }


            	            }
            	            break;
            	        case RULE_STRING:
            	            {
            	            int LA54_5 = input.LA(2);

            	            if ( ((true)) ) {
            	                alt54=1;
            	            }


            	            }
            	            break;

            	        }

            	        switch (alt54) {
            	    	case 1 :
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2771:7: {...}? => ( (lv_tags_31_0= ruleTagDef ) )
            	    	    {
            	    	    if ( !((true)) ) {
            	    	        if (state.backtracking>0) {state.failed=true; return current;}
            	    	        throw new FailedPredicateException(input, "ruleRelationDef", "true");
            	    	    }
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2771:16: ( (lv_tags_31_0= ruleTagDef ) )
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2772:1: (lv_tags_31_0= ruleTagDef )
            	    	    {
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2772:1: (lv_tags_31_0= ruleTagDef )
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2773:3: lv_tags_31_0= ruleTagDef
            	    	    {
            	    	    if ( state.backtracking==0 ) {
            	    	       
            	    	      	        newCompositeNode(grammarAccess.getRelationDefAccess().getTagsTagDefParserRuleCall_8_6_0()); 
            	    	      	    
            	    	    }
            	    	    pushFollow(FOLLOW_ruleTagDef_in_ruleRelationDef6163);
            	    	    lv_tags_31_0=ruleTagDef();

            	    	    state._fsp--;
            	    	    if (state.failed) return current;
            	    	    if ( state.backtracking==0 ) {

            	    	      	        if (current==null) {
            	    	      	            current = createModelElementForParent(grammarAccess.getRelationDefRule());
            	    	      	        }
            	    	             		add(
            	    	             			current, 
            	    	             			"tags",
            	    	              		lv_tags_31_0, 
            	    	              		"TagDef");
            	    	      	        afterParserOrEnumRuleCall();
            	    	      	    
            	    	    }

            	    	    }


            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt54 >= 1 ) break loop54;
            	    	    if (state.backtracking>0) {state.failed=true; return current;}
            	                EarlyExitException eee =
            	                    new EarlyExitException(54, input);
            	                throw eee;
            	        }
            	        cnt54++;
            	    } while (true);

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationDefAccess().getUnorderedGroup_8());

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop55;
                }
            } while (true);


            }


            }

            getUnorderedGroupHelper().leave(grammarAccess.getRelationDefAccess().getUnorderedGroup_8());

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2803:2: ( ( 'end' )=>otherlv_32= 'end' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2803:3: ( 'end' )=>otherlv_32= 'end'
            {
            otherlv_32=(Token)match(input,29,FOLLOW_29_in_ruleRelationDef6224); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_32, grammarAccess.getRelationDefAccess().getEndKeyword_9());
                  
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRelationDef"


    // $ANTLR start "entryRulePolicies"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2816:1: entryRulePolicies returns [EObject current=null] : iv_rulePolicies= rulePolicies EOF ;
    public final EObject entryRulePolicies() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePolicies = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2817:2: (iv_rulePolicies= rulePolicies EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2818:2: iv_rulePolicies= rulePolicies EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPoliciesRule()); 
            }
            pushFollow(FOLLOW_rulePolicies_in_entryRulePolicies6261);
            iv_rulePolicies=rulePolicies();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePolicies; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePolicies6271); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePolicies"


    // $ANTLR start "rulePolicies"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2825:1: rulePolicies returns [EObject current=null] : ( () otherlv_1= 'policies' otherlv_2= '{' ( (lv_policyExp_3_0= ruleXPolicyExpression ) )* otherlv_4= '}' ) ;
    public final EObject rulePolicies() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_policyExp_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2828:28: ( ( () otherlv_1= 'policies' otherlv_2= '{' ( (lv_policyExp_3_0= ruleXPolicyExpression ) )* otherlv_4= '}' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2829:1: ( () otherlv_1= 'policies' otherlv_2= '{' ( (lv_policyExp_3_0= ruleXPolicyExpression ) )* otherlv_4= '}' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2829:1: ( () otherlv_1= 'policies' otherlv_2= '{' ( (lv_policyExp_3_0= ruleXPolicyExpression ) )* otherlv_4= '}' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2829:2: () otherlv_1= 'policies' otherlv_2= '{' ( (lv_policyExp_3_0= ruleXPolicyExpression ) )* otherlv_4= '}'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2829:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2830:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getPoliciesAccess().getPoliciesAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,52,FOLLOW_52_in_rulePolicies6317); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getPoliciesAccess().getPoliciesKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,13,FOLLOW_13_in_rulePolicies6329); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getPoliciesAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2843:1: ( (lv_policyExp_3_0= ruleXPolicyExpression ) )*
            loop56:
            do {
                int alt56=2;
                int LA56_0 = input.LA(1);

                if ( (LA56_0==74||LA56_0==80) ) {
                    alt56=1;
                }


                switch (alt56) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2844:1: (lv_policyExp_3_0= ruleXPolicyExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2844:1: (lv_policyExp_3_0= ruleXPolicyExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2845:3: lv_policyExp_3_0= ruleXPolicyExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getPoliciesAccess().getPolicyExpXPolicyExpressionParserRuleCall_3_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXPolicyExpression_in_rulePolicies6350);
            	    lv_policyExp_3_0=ruleXPolicyExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getPoliciesRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"policyExp",
            	              		lv_policyExp_3_0, 
            	              		"XPolicyExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop56;
                }
            } while (true);

            otherlv_4=(Token)match(input,14,FOLLOW_14_in_rulePolicies6363); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getPoliciesAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePolicies"


    // $ANTLR start "entryRuleViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2873:1: entryRuleViewDef returns [EObject current=null] : iv_ruleViewDef= ruleViewDef EOF ;
    public final EObject entryRuleViewDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleViewDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2874:2: (iv_ruleViewDef= ruleViewDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2875:2: iv_ruleViewDef= ruleViewDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getViewDefRule()); 
            }
            pushFollow(FOLLOW_ruleViewDef_in_entryRuleViewDef6399);
            iv_ruleViewDef=ruleViewDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleViewDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleViewDef6409); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleViewDef"


    // $ANTLR start "ruleViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2882:1: ruleViewDef returns [EObject current=null] : (this_NodeViewDef_0= ruleNodeViewDef | this_LabelViewDef_1= ruleLabelViewDef | this_CompartmentViewDef_2= ruleCompartmentViewDef | this_RelationViewDef_3= ruleRelationViewDef ) ;
    public final EObject ruleViewDef() throws RecognitionException {
        EObject current = null;

        EObject this_NodeViewDef_0 = null;

        EObject this_LabelViewDef_1 = null;

        EObject this_CompartmentViewDef_2 = null;

        EObject this_RelationViewDef_3 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2885:28: ( (this_NodeViewDef_0= ruleNodeViewDef | this_LabelViewDef_1= ruleLabelViewDef | this_CompartmentViewDef_2= ruleCompartmentViewDef | this_RelationViewDef_3= ruleRelationViewDef ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2886:1: (this_NodeViewDef_0= ruleNodeViewDef | this_LabelViewDef_1= ruleLabelViewDef | this_CompartmentViewDef_2= ruleCompartmentViewDef | this_RelationViewDef_3= ruleRelationViewDef )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2886:1: (this_NodeViewDef_0= ruleNodeViewDef | this_LabelViewDef_1= ruleLabelViewDef | this_CompartmentViewDef_2= ruleCompartmentViewDef | this_RelationViewDef_3= ruleRelationViewDef )
            int alt57=4;
            switch ( input.LA(1) ) {
            case 53:
                {
                alt57=1;
                }
                break;
            case 31:
                {
                alt57=2;
                }
                break;
            case 60:
                {
                alt57=3;
                }
                break;
            case 61:
                {
                alt57=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 57, 0, input);

                throw nvae;
            }

            switch (alt57) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2887:5: this_NodeViewDef_0= ruleNodeViewDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getViewDefAccess().getNodeViewDefParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNodeViewDef_in_ruleViewDef6456);
                    this_NodeViewDef_0=ruleNodeViewDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NodeViewDef_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2897:5: this_LabelViewDef_1= ruleLabelViewDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getViewDefAccess().getLabelViewDefParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleLabelViewDef_in_ruleViewDef6483);
                    this_LabelViewDef_1=ruleLabelViewDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LabelViewDef_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2907:5: this_CompartmentViewDef_2= ruleCompartmentViewDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getViewDefAccess().getCompartmentViewDefParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleCompartmentViewDef_in_ruleViewDef6510);
                    this_CompartmentViewDef_2=ruleCompartmentViewDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_CompartmentViewDef_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2917:5: this_RelationViewDef_3= ruleRelationViewDef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getViewDefAccess().getRelationViewDefParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleRelationViewDef_in_ruleViewDef6537);
                    this_RelationViewDef_3=ruleRelationViewDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_RelationViewDef_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleViewDef"


    // $ANTLR start "entryRuleNodeViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2933:1: entryRuleNodeViewDef returns [EObject current=null] : iv_ruleNodeViewDef= ruleNodeViewDef EOF ;
    public final EObject entryRuleNodeViewDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNodeViewDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2934:2: (iv_ruleNodeViewDef= ruleNodeViewDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2935:2: iv_ruleNodeViewDef= ruleNodeViewDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNodeViewDefRule()); 
            }
            pushFollow(FOLLOW_ruleNodeViewDef_in_entryRuleNodeViewDef6572);
            iv_ruleNodeViewDef=ruleNodeViewDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNodeViewDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNodeViewDef6582); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNodeViewDef"


    // $ANTLR start "ruleNodeViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2942:1: ruleNodeViewDef returns [EObject current=null] : ( ( (lv_viewType_0_0= 'node' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? (otherlv_6= 'add' ( (lv_children_7_0= ruleSubViewDef ) ) )* ( ( 'end' )=>otherlv_8= 'end' ) )? ) ;
    public final EObject ruleNodeViewDef() throws RecognitionException {
        EObject current = null;

        Token lv_viewType_0_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_editpart_5_2=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_editpart_5_1 = null;

        EObject lv_children_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2945:28: ( ( ( (lv_viewType_0_0= 'node' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? (otherlv_6= 'add' ( (lv_children_7_0= ruleSubViewDef ) ) )* ( ( 'end' )=>otherlv_8= 'end' ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2946:1: ( ( (lv_viewType_0_0= 'node' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? (otherlv_6= 'add' ( (lv_children_7_0= ruleSubViewDef ) ) )* ( ( 'end' )=>otherlv_8= 'end' ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2946:1: ( ( (lv_viewType_0_0= 'node' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? (otherlv_6= 'add' ( (lv_children_7_0= ruleSubViewDef ) ) )* ( ( 'end' )=>otherlv_8= 'end' ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2946:2: ( (lv_viewType_0_0= 'node' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? (otherlv_6= 'add' ( (lv_children_7_0= ruleSubViewDef ) ) )* ( ( 'end' )=>otherlv_8= 'end' ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2946:2: ( (lv_viewType_0_0= 'node' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2947:1: (lv_viewType_0_0= 'node' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2947:1: (lv_viewType_0_0= 'node' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2948:3: lv_viewType_0_0= 'node'
            {
            lv_viewType_0_0=(Token)match(input,53,FOLLOW_53_in_ruleNodeViewDef6625); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_viewType_0_0, grammarAccess.getNodeViewDefAccess().getViewTypeNodeKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getNodeViewDefRule());
              	        }
                     		setWithLastConsumed(current, "viewType", lv_viewType_0_0, "node");
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2961:2: ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? (otherlv_6= 'add' ( (lv_children_7_0= ruleSubViewDef ) ) )* ( ( 'end' )=>otherlv_8= 'end' ) )?
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( (LA62_0==RULE_ID) ) {
                int LA62_1 = input.LA(2);

                if ( (LA62_1==21) ) {
                    alt62=1;
                }
            }
            else if ( (LA62_0==21) ) {
                alt62=1;
            }
            switch (alt62) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2961:3: ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? (otherlv_6= 'add' ( (lv_children_7_0= ruleSubViewDef ) ) )* ( ( 'end' )=>otherlv_8= 'end' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2961:3: ( (lv_name_1_0= RULE_ID ) )?
                    int alt58=2;
                    int LA58_0 = input.LA(1);

                    if ( (LA58_0==RULE_ID) ) {
                        alt58=1;
                    }
                    switch (alt58) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2962:1: (lv_name_1_0= RULE_ID )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2962:1: (lv_name_1_0= RULE_ID )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2963:3: lv_name_1_0= RULE_ID
                            {
                            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNodeViewDef6656); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_name_1_0, grammarAccess.getNodeViewDefAccess().getNameIDTerminalRuleCall_1_0_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getNodeViewDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"name",
                                      		lv_name_1_0, 
                                      		"ID");
                              	    
                            }

                            }


                            }
                            break;

                    }

                    otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleNodeViewDef6674); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getNodeViewDefAccess().getColonKeyword_1_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2983:1: (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )?
                    int alt60=2;
                    int LA60_0 = input.LA(1);

                    if ( (LA60_0==54) ) {
                        alt60=1;
                    }
                    switch (alt60) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2983:3: otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) )
                            {
                            otherlv_3=(Token)match(input,54,FOLLOW_54_in_ruleNodeViewDef6687); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_3, grammarAccess.getNodeViewDefAccess().getEditpartKeyword_1_2_0());
                                  
                            }
                            otherlv_4=(Token)match(input,17,FOLLOW_17_in_ruleNodeViewDef6699); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_4, grammarAccess.getNodeViewDefAccess().getEqualsSignKeyword_1_2_1());
                                  
                            }
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2991:1: ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2992:1: ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2992:1: ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2993:1: (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2993:1: (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING )
                            int alt59=2;
                            int LA59_0 = input.LA(1);

                            if ( (LA59_0==RULE_ID) ) {
                                alt59=1;
                            }
                            else if ( (LA59_0==RULE_STRING) ) {
                                alt59=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 59, 0, input);

                                throw nvae;
                            }
                            switch (alt59) {
                                case 1 :
                                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:2994:3: lv_editpart_5_1= ruleQualifiedName
                                    {
                                    if ( state.backtracking==0 ) {
                                       
                                      	        newCompositeNode(grammarAccess.getNodeViewDefAccess().getEditpartQualifiedNameParserRuleCall_1_2_2_0_0()); 
                                      	    
                                    }
                                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleNodeViewDef6722);
                                    lv_editpart_5_1=ruleQualifiedName();

                                    state._fsp--;
                                    if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElementForParent(grammarAccess.getNodeViewDefRule());
                                      	        }
                                             		set(
                                             			current, 
                                             			"editpart",
                                              		lv_editpart_5_1, 
                                              		"QualifiedName");
                                      	        afterParserOrEnumRuleCall();
                                      	    
                                    }

                                    }
                                    break;
                                case 2 :
                                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3009:8: lv_editpart_5_2= RULE_STRING
                                    {
                                    lv_editpart_5_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleNodeViewDef6737); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      			newLeafNode(lv_editpart_5_2, grammarAccess.getNodeViewDefAccess().getEditpartSTRINGTerminalRuleCall_1_2_2_0_1()); 
                                      		
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getNodeViewDefRule());
                                      	        }
                                             		setWithLastConsumed(
                                             			current, 
                                             			"editpart",
                                              		lv_editpart_5_2, 
                                              		"STRING");
                                      	    
                                    }

                                    }
                                    break;

                            }


                            }


                            }


                            }
                            break;

                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3027:4: (otherlv_6= 'add' ( (lv_children_7_0= ruleSubViewDef ) ) )*
                    loop61:
                    do {
                        int alt61=2;
                        int LA61_0 = input.LA(1);

                        if ( (LA61_0==55) ) {
                            alt61=1;
                        }


                        switch (alt61) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3027:6: otherlv_6= 'add' ( (lv_children_7_0= ruleSubViewDef ) )
                    	    {
                    	    otherlv_6=(Token)match(input,55,FOLLOW_55_in_ruleNodeViewDef6760); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_6, grammarAccess.getNodeViewDefAccess().getAddKeyword_1_3_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3031:1: ( (lv_children_7_0= ruleSubViewDef ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3032:1: (lv_children_7_0= ruleSubViewDef )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3032:1: (lv_children_7_0= ruleSubViewDef )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3033:3: lv_children_7_0= ruleSubViewDef
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getNodeViewDefAccess().getChildrenSubViewDefParserRuleCall_1_3_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleSubViewDef_in_ruleNodeViewDef6781);
                    	    lv_children_7_0=ruleSubViewDef();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getNodeViewDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"children",
                    	              		lv_children_7_0, 
                    	              		"SubViewDef");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop61;
                        }
                    } while (true);

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3049:4: ( ( 'end' )=>otherlv_8= 'end' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3049:5: ( 'end' )=>otherlv_8= 'end'
                    {
                    otherlv_8=(Token)match(input,29,FOLLOW_29_in_ruleNodeViewDef6803); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getNodeViewDefAccess().getEndKeyword_1_4());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNodeViewDef"


    // $ANTLR start "entryRuleLabelViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3062:1: entryRuleLabelViewDef returns [EObject current=null] : iv_ruleLabelViewDef= ruleLabelViewDef EOF ;
    public final EObject entryRuleLabelViewDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLabelViewDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3063:2: (iv_ruleLabelViewDef= ruleLabelViewDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3064:2: iv_ruleLabelViewDef= ruleLabelViewDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLabelViewDefRule()); 
            }
            pushFollow(FOLLOW_ruleLabelViewDef_in_entryRuleLabelViewDef6842);
            iv_ruleLabelViewDef=ruleLabelViewDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLabelViewDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleLabelViewDef6852); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLabelViewDef"


    // $ANTLR start "ruleLabelViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3071:1: ruleLabelViewDef returns [EObject current=null] : ( ( (lv_viewType_0_0= 'label' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) ( ( 'end' )=>otherlv_23= 'end' ) )? ) ;
    public final EObject ruleLabelViewDef() throws RecognitionException {
        EObject current = null;

        Token lv_viewType_0_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token lv_editpart_6_2=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token lv_viewPattern_14_0=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token otherlv_18=null;
        Token otherlv_20=null;
        Token otherlv_21=null;
        Token lv_editPattern_22_0=null;
        Token otherlv_23=null;
        AntlrDatatypeRuleToken lv_editpart_6_1 = null;

        EObject lv_viewFields_9_0 = null;

        EObject lv_viewFields_11_0 = null;

        EObject lv_editFields_17_0 = null;

        EObject lv_editFields_19_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3074:28: ( ( ( (lv_viewType_0_0= 'label' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) ( ( 'end' )=>otherlv_23= 'end' ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3075:1: ( ( (lv_viewType_0_0= 'label' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) ( ( 'end' )=>otherlv_23= 'end' ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3075:1: ( ( (lv_viewType_0_0= 'label' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) ( ( 'end' )=>otherlv_23= 'end' ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3075:2: ( (lv_viewType_0_0= 'label' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) ( ( 'end' )=>otherlv_23= 'end' ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3075:2: ( (lv_viewType_0_0= 'label' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3076:1: (lv_viewType_0_0= 'label' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3076:1: (lv_viewType_0_0= 'label' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3077:3: lv_viewType_0_0= 'label'
            {
            lv_viewType_0_0=(Token)match(input,31,FOLLOW_31_in_ruleLabelViewDef6895); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_viewType_0_0, grammarAccess.getLabelViewDefAccess().getViewTypeLabelKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getLabelViewDefRule());
              	        }
                     		setWithLastConsumed(current, "viewType", lv_viewType_0_0, "label");
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3090:2: ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) ( ( 'end' )=>otherlv_23= 'end' ) )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==RULE_ID) ) {
                int LA68_1 = input.LA(2);

                if ( (LA68_1==21) ) {
                    alt68=1;
                }
            }
            else if ( (LA68_0==21) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3090:3: ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) ) ) ( ( 'end' )=>otherlv_23= 'end' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3090:3: ( (lv_name_1_0= RULE_ID ) )?
                    int alt63=2;
                    int LA63_0 = input.LA(1);

                    if ( (LA63_0==RULE_ID) ) {
                        alt63=1;
                    }
                    switch (alt63) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3091:1: (lv_name_1_0= RULE_ID )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3091:1: (lv_name_1_0= RULE_ID )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3092:3: lv_name_1_0= RULE_ID
                            {
                            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLabelViewDef6926); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_name_1_0, grammarAccess.getLabelViewDefAccess().getNameIDTerminalRuleCall_1_0_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getLabelViewDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"name",
                                      		lv_name_1_0, 
                                      		"ID");
                              	    
                            }

                            }


                            }
                            break;

                    }

                    otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleLabelViewDef6944); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getLabelViewDefAccess().getColonKeyword_1_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3112:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3114:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3114:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3115:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* )
                    {
                    getUnorderedGroupHelper().enter(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2());
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3118:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )* )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3119:3: ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )*
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3119:3: ( ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) ) | ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) ) )*
                    loop67:
                    do {
                        int alt67=6;
                        int LA67_0 = input.LA(1);

                        if ( LA67_0 ==54 && getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 0) ) {
                            alt67=1;
                        }
                        else if ( LA67_0 ==56 && getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 1) ) {
                            alt67=2;
                        }
                        else if ( LA67_0 ==57 && getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 2) ) {
                            alt67=3;
                        }
                        else if ( LA67_0 ==58 && getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 3) ) {
                            alt67=4;
                        }
                        else if ( LA67_0 ==59 && getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 4) ) {
                            alt67=5;
                        }


                        switch (alt67) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3121:4: ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3121:4: ({...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3122:5: {...}? => ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 0) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 0)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3122:111: ( ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3123:6: ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 0);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3126:6: ({...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3126:7: {...}? => (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3126:16: (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3126:18: otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) )
                    	    {
                    	    otherlv_4=(Token)match(input,54,FOLLOW_54_in_ruleLabelViewDef7002); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getLabelViewDefAccess().getEditpartKeyword_1_2_0_0());
                    	          
                    	    }
                    	    otherlv_5=(Token)match(input,17,FOLLOW_17_in_ruleLabelViewDef7014); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getLabelViewDefAccess().getEqualsSignKeyword_1_2_0_1());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3134:1: ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3135:1: ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3135:1: ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3136:1: (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3136:1: (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING )
                    	    int alt64=2;
                    	    int LA64_0 = input.LA(1);

                    	    if ( (LA64_0==RULE_ID) ) {
                    	        alt64=1;
                    	    }
                    	    else if ( (LA64_0==RULE_STRING) ) {
                    	        alt64=2;
                    	    }
                    	    else {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 64, 0, input);

                    	        throw nvae;
                    	    }
                    	    switch (alt64) {
                    	        case 1 :
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3137:3: lv_editpart_6_1= ruleQualifiedName
                    	            {
                    	            if ( state.backtracking==0 ) {
                    	               
                    	              	        newCompositeNode(grammarAccess.getLabelViewDefAccess().getEditpartQualifiedNameParserRuleCall_1_2_0_2_0_0()); 
                    	              	    
                    	            }
                    	            pushFollow(FOLLOW_ruleQualifiedName_in_ruleLabelViewDef7037);
                    	            lv_editpart_6_1=ruleQualifiedName();

                    	            state._fsp--;
                    	            if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	              	        if (current==null) {
                    	              	            current = createModelElementForParent(grammarAccess.getLabelViewDefRule());
                    	              	        }
                    	                     		set(
                    	                     			current, 
                    	                     			"editpart",
                    	                      		lv_editpart_6_1, 
                    	                      		"QualifiedName");
                    	              	        afterParserOrEnumRuleCall();
                    	              	    
                    	            }

                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3152:8: lv_editpart_6_2= RULE_STRING
                    	            {
                    	            lv_editpart_6_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLabelViewDef7052); if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	              			newLeafNode(lv_editpart_6_2, grammarAccess.getLabelViewDefAccess().getEditpartSTRINGTerminalRuleCall_1_2_0_2_0_1()); 
                    	              		
                    	            }
                    	            if ( state.backtracking==0 ) {

                    	              	        if (current==null) {
                    	              	            current = createModelElement(grammarAccess.getLabelViewDefRule());
                    	              	        }
                    	                     		setWithLastConsumed(
                    	                     			current, 
                    	                     			"editpart",
                    	                      		lv_editpart_6_2, 
                    	                      		"STRING");
                    	              	    
                    	            }

                    	            }
                    	            break;

                    	    }


                    	    }


                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2());

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3177:4: ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3177:4: ({...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3178:5: {...}? => ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 1) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 1)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3178:111: ( ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3179:6: ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 1);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3182:6: ({...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3182:7: {...}? => (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3182:16: (otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )* )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3182:18: otherlv_7= 'view_field' otherlv_8= '=' ( (lv_viewFields_9_0= ruleLabelSourceField ) ) (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )*
                    	    {
                    	    otherlv_7=(Token)match(input,56,FOLLOW_56_in_ruleLabelViewDef7128); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_7, grammarAccess.getLabelViewDefAccess().getView_fieldKeyword_1_2_1_0());
                    	          
                    	    }
                    	    otherlv_8=(Token)match(input,17,FOLLOW_17_in_ruleLabelViewDef7140); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_8, grammarAccess.getLabelViewDefAccess().getEqualsSignKeyword_1_2_1_1());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3190:1: ( (lv_viewFields_9_0= ruleLabelSourceField ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3191:1: (lv_viewFields_9_0= ruleLabelSourceField )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3191:1: (lv_viewFields_9_0= ruleLabelSourceField )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3192:3: lv_viewFields_9_0= ruleLabelSourceField
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getLabelViewDefAccess().getViewFieldsLabelSourceFieldParserRuleCall_1_2_1_2_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleLabelSourceField_in_ruleLabelViewDef7161);
                    	    lv_viewFields_9_0=ruleLabelSourceField();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getLabelViewDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"viewFields",
                    	              		lv_viewFields_9_0, 
                    	              		"LabelSourceField");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }

                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3208:2: (otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) ) )*
                    	    loop65:
                    	    do {
                    	        int alt65=2;
                    	        int LA65_0 = input.LA(1);

                    	        if ( (LA65_0==37) ) {
                    	            alt65=1;
                    	        }


                    	        switch (alt65) {
                    	    	case 1 :
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3208:4: otherlv_10= ',' ( (lv_viewFields_11_0= ruleLabelSourceField ) )
                    	    	    {
                    	    	    otherlv_10=(Token)match(input,37,FOLLOW_37_in_ruleLabelViewDef7174); if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	          	newLeafNode(otherlv_10, grammarAccess.getLabelViewDefAccess().getCommaKeyword_1_2_1_3_0());
                    	    	          
                    	    	    }
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3212:1: ( (lv_viewFields_11_0= ruleLabelSourceField ) )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3213:1: (lv_viewFields_11_0= ruleLabelSourceField )
                    	    	    {
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3213:1: (lv_viewFields_11_0= ruleLabelSourceField )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3214:3: lv_viewFields_11_0= ruleLabelSourceField
                    	    	    {
                    	    	    if ( state.backtracking==0 ) {
                    	    	       
                    	    	      	        newCompositeNode(grammarAccess.getLabelViewDefAccess().getViewFieldsLabelSourceFieldParserRuleCall_1_2_1_3_1_0()); 
                    	    	      	    
                    	    	    }
                    	    	    pushFollow(FOLLOW_ruleLabelSourceField_in_ruleLabelViewDef7195);
                    	    	    lv_viewFields_11_0=ruleLabelSourceField();

                    	    	    state._fsp--;
                    	    	    if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	      	        if (current==null) {
                    	    	      	            current = createModelElementForParent(grammarAccess.getLabelViewDefRule());
                    	    	      	        }
                    	    	             		add(
                    	    	             			current, 
                    	    	             			"viewFields",
                    	    	              		lv_viewFields_11_0, 
                    	    	              		"LabelSourceField");
                    	    	      	        afterParserOrEnumRuleCall();
                    	    	      	    
                    	    	    }

                    	    	    }


                    	    	    }


                    	    	    }
                    	    	    break;

                    	    	default :
                    	    	    break loop65;
                    	        }
                    	    } while (true);


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2());

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3237:4: ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3237:4: ({...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3238:5: {...}? => ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 2) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 2)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3238:111: ( ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3239:6: ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 2);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3242:6: ({...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3242:7: {...}? => (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3242:16: (otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3242:18: otherlv_12= 'view_pattern' otherlv_13= '=' ( (lv_viewPattern_14_0= RULE_STRING ) )
                    	    {
                    	    otherlv_12=(Token)match(input,57,FOLLOW_57_in_ruleLabelViewDef7265); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_12, grammarAccess.getLabelViewDefAccess().getView_patternKeyword_1_2_2_0());
                    	          
                    	    }
                    	    otherlv_13=(Token)match(input,17,FOLLOW_17_in_ruleLabelViewDef7277); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_13, grammarAccess.getLabelViewDefAccess().getEqualsSignKeyword_1_2_2_1());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3250:1: ( (lv_viewPattern_14_0= RULE_STRING ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3251:1: (lv_viewPattern_14_0= RULE_STRING )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3251:1: (lv_viewPattern_14_0= RULE_STRING )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3252:3: lv_viewPattern_14_0= RULE_STRING
                    	    {
                    	    lv_viewPattern_14_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLabelViewDef7294); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      			newLeafNode(lv_viewPattern_14_0, grammarAccess.getLabelViewDefAccess().getViewPatternSTRINGTerminalRuleCall_1_2_2_2_0()); 
                    	      		
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getLabelViewDefRule());
                    	      	        }
                    	             		setWithLastConsumed(
                    	             			current, 
                    	             			"viewPattern",
                    	              		lv_viewPattern_14_0, 
                    	              		"STRING");
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2());

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 4 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3275:4: ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3275:4: ({...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3276:5: {...}? => ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 3) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 3)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3276:111: ( ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3277:6: ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 3);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3280:6: ({...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3280:7: {...}? => (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3280:16: (otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )* )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3280:18: otherlv_15= 'edit_field' otherlv_16= '=' ( (lv_editFields_17_0= ruleLabelSourceField ) ) (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )*
                    	    {
                    	    otherlv_15=(Token)match(input,58,FOLLOW_58_in_ruleLabelViewDef7367); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_15, grammarAccess.getLabelViewDefAccess().getEdit_fieldKeyword_1_2_3_0());
                    	          
                    	    }
                    	    otherlv_16=(Token)match(input,17,FOLLOW_17_in_ruleLabelViewDef7379); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_16, grammarAccess.getLabelViewDefAccess().getEqualsSignKeyword_1_2_3_1());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3288:1: ( (lv_editFields_17_0= ruleLabelSourceField ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3289:1: (lv_editFields_17_0= ruleLabelSourceField )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3289:1: (lv_editFields_17_0= ruleLabelSourceField )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3290:3: lv_editFields_17_0= ruleLabelSourceField
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getLabelViewDefAccess().getEditFieldsLabelSourceFieldParserRuleCall_1_2_3_2_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleLabelSourceField_in_ruleLabelViewDef7400);
                    	    lv_editFields_17_0=ruleLabelSourceField();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getLabelViewDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"editFields",
                    	              		lv_editFields_17_0, 
                    	              		"LabelSourceField");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }

                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3306:2: (otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) ) )*
                    	    loop66:
                    	    do {
                    	        int alt66=2;
                    	        int LA66_0 = input.LA(1);

                    	        if ( (LA66_0==37) ) {
                    	            alt66=1;
                    	        }


                    	        switch (alt66) {
                    	    	case 1 :
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3306:4: otherlv_18= ',' ( (lv_editFields_19_0= ruleLabelSourceField ) )
                    	    	    {
                    	    	    otherlv_18=(Token)match(input,37,FOLLOW_37_in_ruleLabelViewDef7413); if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	          	newLeafNode(otherlv_18, grammarAccess.getLabelViewDefAccess().getCommaKeyword_1_2_3_3_0());
                    	    	          
                    	    	    }
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3310:1: ( (lv_editFields_19_0= ruleLabelSourceField ) )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3311:1: (lv_editFields_19_0= ruleLabelSourceField )
                    	    	    {
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3311:1: (lv_editFields_19_0= ruleLabelSourceField )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3312:3: lv_editFields_19_0= ruleLabelSourceField
                    	    	    {
                    	    	    if ( state.backtracking==0 ) {
                    	    	       
                    	    	      	        newCompositeNode(grammarAccess.getLabelViewDefAccess().getEditFieldsLabelSourceFieldParserRuleCall_1_2_3_3_1_0()); 
                    	    	      	    
                    	    	    }
                    	    	    pushFollow(FOLLOW_ruleLabelSourceField_in_ruleLabelViewDef7434);
                    	    	    lv_editFields_19_0=ruleLabelSourceField();

                    	    	    state._fsp--;
                    	    	    if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	      	        if (current==null) {
                    	    	      	            current = createModelElementForParent(grammarAccess.getLabelViewDefRule());
                    	    	      	        }
                    	    	             		add(
                    	    	             			current, 
                    	    	             			"editFields",
                    	    	              		lv_editFields_19_0, 
                    	    	              		"LabelSourceField");
                    	    	      	        afterParserOrEnumRuleCall();
                    	    	      	    
                    	    	    }

                    	    	    }


                    	    	    }


                    	    	    }
                    	    	    break;

                    	    	default :
                    	    	    break loop66;
                    	        }
                    	    } while (true);


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2());

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 5 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3335:4: ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3335:4: ({...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3336:5: {...}? => ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 4) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 4)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3336:111: ( ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3337:6: ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2(), 4);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3340:6: ({...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3340:7: {...}? => (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleLabelViewDef", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3340:16: (otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3340:18: otherlv_20= 'edit_pattern' otherlv_21= '=' ( (lv_editPattern_22_0= RULE_STRING ) )
                    	    {
                    	    otherlv_20=(Token)match(input,59,FOLLOW_59_in_ruleLabelViewDef7504); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_20, grammarAccess.getLabelViewDefAccess().getEdit_patternKeyword_1_2_4_0());
                    	          
                    	    }
                    	    otherlv_21=(Token)match(input,17,FOLLOW_17_in_ruleLabelViewDef7516); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_21, grammarAccess.getLabelViewDefAccess().getEqualsSignKeyword_1_2_4_1());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3348:1: ( (lv_editPattern_22_0= RULE_STRING ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3349:1: (lv_editPattern_22_0= RULE_STRING )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3349:1: (lv_editPattern_22_0= RULE_STRING )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3350:3: lv_editPattern_22_0= RULE_STRING
                    	    {
                    	    lv_editPattern_22_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLabelViewDef7533); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      			newLeafNode(lv_editPattern_22_0, grammarAccess.getLabelViewDefAccess().getEditPatternSTRINGTerminalRuleCall_1_2_4_2_0()); 
                    	      		
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getLabelViewDefRule());
                    	      	        }
                    	             		setWithLastConsumed(
                    	             			current, 
                    	             			"editPattern",
                    	              		lv_editPattern_22_0, 
                    	              		"STRING");
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2());

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop67;
                        }
                    } while (true);


                    }


                    }

                    getUnorderedGroupHelper().leave(grammarAccess.getLabelViewDefAccess().getUnorderedGroup_1_2());

                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3380:2: ( ( 'end' )=>otherlv_23= 'end' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3380:3: ( 'end' )=>otherlv_23= 'end'
                    {
                    otherlv_23=(Token)match(input,29,FOLLOW_29_in_ruleLabelViewDef7599); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_23, grammarAccess.getLabelViewDefAccess().getEndKeyword_1_3());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLabelViewDef"


    // $ANTLR start "entryRuleLabelSourceField"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3393:1: entryRuleLabelSourceField returns [EObject current=null] : iv_ruleLabelSourceField= ruleLabelSourceField EOF ;
    public final EObject entryRuleLabelSourceField() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLabelSourceField = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3394:2: (iv_ruleLabelSourceField= ruleLabelSourceField EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3395:2: iv_ruleLabelSourceField= ruleLabelSourceField EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLabelSourceFieldRule()); 
            }
            pushFollow(FOLLOW_ruleLabelSourceField_in_entryRuleLabelSourceField7638);
            iv_ruleLabelSourceField=ruleLabelSourceField();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLabelSourceField; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleLabelSourceField7648); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLabelSourceField"


    // $ANTLR start "ruleLabelSourceField"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3402:1: ruleLabelSourceField returns [EObject current=null] : ( ( ( (lv_builtIn_0_0= '@' ) ) ( (lv_name_1_0= RULE_ID ) ) ) | ( ( ruleQualifiedName ) ) ) ;
    public final EObject ruleLabelSourceField() throws RecognitionException {
        EObject current = null;

        Token lv_builtIn_0_0=null;
        Token lv_name_1_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3405:28: ( ( ( ( (lv_builtIn_0_0= '@' ) ) ( (lv_name_1_0= RULE_ID ) ) ) | ( ( ruleQualifiedName ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3406:1: ( ( ( (lv_builtIn_0_0= '@' ) ) ( (lv_name_1_0= RULE_ID ) ) ) | ( ( ruleQualifiedName ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3406:1: ( ( ( (lv_builtIn_0_0= '@' ) ) ( (lv_name_1_0= RULE_ID ) ) ) | ( ( ruleQualifiedName ) ) )
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==46) ) {
                alt69=1;
            }
            else if ( (LA69_0==RULE_ID) ) {
                alt69=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 69, 0, input);

                throw nvae;
            }
            switch (alt69) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3406:2: ( ( (lv_builtIn_0_0= '@' ) ) ( (lv_name_1_0= RULE_ID ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3406:2: ( ( (lv_builtIn_0_0= '@' ) ) ( (lv_name_1_0= RULE_ID ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3406:3: ( (lv_builtIn_0_0= '@' ) ) ( (lv_name_1_0= RULE_ID ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3406:3: ( (lv_builtIn_0_0= '@' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3407:1: (lv_builtIn_0_0= '@' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3407:1: (lv_builtIn_0_0= '@' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3408:3: lv_builtIn_0_0= '@'
                    {
                    lv_builtIn_0_0=(Token)match(input,46,FOLLOW_46_in_ruleLabelSourceField7692); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_builtIn_0_0, grammarAccess.getLabelSourceFieldAccess().getBuiltInCommercialAtKeyword_0_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLabelSourceFieldRule());
                      	        }
                             		setWithLastConsumed(current, "builtIn", true, "@");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3421:2: ( (lv_name_1_0= RULE_ID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3422:1: (lv_name_1_0= RULE_ID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3422:1: (lv_name_1_0= RULE_ID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3423:3: lv_name_1_0= RULE_ID
                    {
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLabelSourceField7722); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_1_0, grammarAccess.getLabelSourceFieldAccess().getNameIDTerminalRuleCall_0_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLabelSourceFieldRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_1_0, 
                              		"ID");
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3440:6: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3440:6: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3441:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3441:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3442:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getLabelSourceFieldRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLabelSourceFieldAccess().getFieldTagEntryDefCrossReference_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleLabelSourceField7757);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLabelSourceField"


    // $ANTLR start "entryRuleCompartmentViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3463:1: entryRuleCompartmentViewDef returns [EObject current=null] : iv_ruleCompartmentViewDef= ruleCompartmentViewDef EOF ;
    public final EObject entryRuleCompartmentViewDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCompartmentViewDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3464:2: (iv_ruleCompartmentViewDef= ruleCompartmentViewDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3465:2: iv_ruleCompartmentViewDef= ruleCompartmentViewDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCompartmentViewDefRule()); 
            }
            pushFollow(FOLLOW_ruleCompartmentViewDef_in_entryRuleCompartmentViewDef7793);
            iv_ruleCompartmentViewDef=ruleCompartmentViewDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCompartmentViewDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCompartmentViewDef7803); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCompartmentViewDef"


    // $ANTLR start "ruleCompartmentViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3472:1: ruleCompartmentViewDef returns [EObject current=null] : ( ( (lv_viewType_0_0= 'compartment' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? ( ( 'end' )=>otherlv_6= 'end' ) )? ) ;
    public final EObject ruleCompartmentViewDef() throws RecognitionException {
        EObject current = null;

        Token lv_viewType_0_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_editpart_5_2=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_editpart_5_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3475:28: ( ( ( (lv_viewType_0_0= 'compartment' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? ( ( 'end' )=>otherlv_6= 'end' ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3476:1: ( ( (lv_viewType_0_0= 'compartment' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? ( ( 'end' )=>otherlv_6= 'end' ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3476:1: ( ( (lv_viewType_0_0= 'compartment' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? ( ( 'end' )=>otherlv_6= 'end' ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3476:2: ( (lv_viewType_0_0= 'compartment' ) ) ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? ( ( 'end' )=>otherlv_6= 'end' ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3476:2: ( (lv_viewType_0_0= 'compartment' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3477:1: (lv_viewType_0_0= 'compartment' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3477:1: (lv_viewType_0_0= 'compartment' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3478:3: lv_viewType_0_0= 'compartment'
            {
            lv_viewType_0_0=(Token)match(input,60,FOLLOW_60_in_ruleCompartmentViewDef7846); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_viewType_0_0, grammarAccess.getCompartmentViewDefAccess().getViewTypeCompartmentKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getCompartmentViewDefRule());
              	        }
                     		setWithLastConsumed(current, "viewType", lv_viewType_0_0, "compartment");
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3491:2: ( ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? ( ( 'end' )=>otherlv_6= 'end' ) )?
            int alt73=2;
            int LA73_0 = input.LA(1);

            if ( (LA73_0==RULE_ID) ) {
                int LA73_1 = input.LA(2);

                if ( (LA73_1==21) ) {
                    alt73=1;
                }
            }
            else if ( (LA73_0==21) ) {
                alt73=1;
            }
            switch (alt73) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3491:3: ( (lv_name_1_0= RULE_ID ) )? otherlv_2= ':' (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )? ( ( 'end' )=>otherlv_6= 'end' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3491:3: ( (lv_name_1_0= RULE_ID ) )?
                    int alt70=2;
                    int LA70_0 = input.LA(1);

                    if ( (LA70_0==RULE_ID) ) {
                        alt70=1;
                    }
                    switch (alt70) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3492:1: (lv_name_1_0= RULE_ID )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3492:1: (lv_name_1_0= RULE_ID )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3493:3: lv_name_1_0= RULE_ID
                            {
                            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCompartmentViewDef7877); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_name_1_0, grammarAccess.getCompartmentViewDefAccess().getNameIDTerminalRuleCall_1_0_0()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getCompartmentViewDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"name",
                                      		lv_name_1_0, 
                                      		"ID");
                              	    
                            }

                            }


                            }
                            break;

                    }

                    otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleCompartmentViewDef7895); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getCompartmentViewDefAccess().getColonKeyword_1_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3513:1: (otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) ) )?
                    int alt72=2;
                    int LA72_0 = input.LA(1);

                    if ( (LA72_0==54) ) {
                        alt72=1;
                    }
                    switch (alt72) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3513:3: otherlv_3= 'editpart' otherlv_4= '=' ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) )
                            {
                            otherlv_3=(Token)match(input,54,FOLLOW_54_in_ruleCompartmentViewDef7908); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_3, grammarAccess.getCompartmentViewDefAccess().getEditpartKeyword_1_2_0());
                                  
                            }
                            otherlv_4=(Token)match(input,17,FOLLOW_17_in_ruleCompartmentViewDef7920); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_4, grammarAccess.getCompartmentViewDefAccess().getEqualsSignKeyword_1_2_1());
                                  
                            }
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3521:1: ( ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3522:1: ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3522:1: ( (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3523:1: (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3523:1: (lv_editpart_5_1= ruleQualifiedName | lv_editpart_5_2= RULE_STRING )
                            int alt71=2;
                            int LA71_0 = input.LA(1);

                            if ( (LA71_0==RULE_ID) ) {
                                alt71=1;
                            }
                            else if ( (LA71_0==RULE_STRING) ) {
                                alt71=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 71, 0, input);

                                throw nvae;
                            }
                            switch (alt71) {
                                case 1 :
                                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3524:3: lv_editpart_5_1= ruleQualifiedName
                                    {
                                    if ( state.backtracking==0 ) {
                                       
                                      	        newCompositeNode(grammarAccess.getCompartmentViewDefAccess().getEditpartQualifiedNameParserRuleCall_1_2_2_0_0()); 
                                      	    
                                    }
                                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleCompartmentViewDef7943);
                                    lv_editpart_5_1=ruleQualifiedName();

                                    state._fsp--;
                                    if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElementForParent(grammarAccess.getCompartmentViewDefRule());
                                      	        }
                                             		set(
                                             			current, 
                                             			"editpart",
                                              		lv_editpart_5_1, 
                                              		"QualifiedName");
                                      	        afterParserOrEnumRuleCall();
                                      	    
                                    }

                                    }
                                    break;
                                case 2 :
                                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3539:8: lv_editpart_5_2= RULE_STRING
                                    {
                                    lv_editpart_5_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleCompartmentViewDef7958); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                      			newLeafNode(lv_editpart_5_2, grammarAccess.getCompartmentViewDefAccess().getEditpartSTRINGTerminalRuleCall_1_2_2_0_1()); 
                                      		
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getCompartmentViewDefRule());
                                      	        }
                                             		setWithLastConsumed(
                                             			current, 
                                             			"editpart",
                                              		lv_editpart_5_2, 
                                              		"STRING");
                                      	    
                                    }

                                    }
                                    break;

                            }


                            }


                            }


                            }
                            break;

                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3557:4: ( ( 'end' )=>otherlv_6= 'end' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3557:5: ( 'end' )=>otherlv_6= 'end'
                    {
                    otherlv_6=(Token)match(input,29,FOLLOW_29_in_ruleCompartmentViewDef7988); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getCompartmentViewDefAccess().getEndKeyword_1_3());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCompartmentViewDef"


    // $ANTLR start "entryRuleRelationViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3570:1: entryRuleRelationViewDef returns [EObject current=null] : iv_ruleRelationViewDef= ruleRelationViewDef EOF ;
    public final EObject entryRuleRelationViewDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRelationViewDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3571:2: (iv_ruleRelationViewDef= ruleRelationViewDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3572:2: iv_ruleRelationViewDef= ruleRelationViewDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRelationViewDefRule()); 
            }
            pushFollow(FOLLOW_ruleRelationViewDef_in_entryRuleRelationViewDef8027);
            iv_ruleRelationViewDef=ruleRelationViewDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRelationViewDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleRelationViewDef8037); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRelationViewDef"


    // $ANTLR start "ruleRelationViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3579:1: ruleRelationViewDef returns [EObject current=null] : ( ( (lv_viewType_0_0= 'connector' ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?) ) )? ) ;
    public final EObject ruleRelationViewDef() throws RecognitionException {
        EObject current = null;

        Token lv_viewType_0_0=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token lv_editpart_6_2=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token otherlv_13=null;
        AntlrDatatypeRuleToken lv_editpart_6_1 = null;

        EObject lv_style_9_0 = null;

        EObject lv_children_11_0 = null;

        EObject lv_constraints_12_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3582:28: ( ( ( (lv_viewType_0_0= 'connector' ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?) ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3583:1: ( ( (lv_viewType_0_0= 'connector' ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?) ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3583:1: ( ( (lv_viewType_0_0= 'connector' ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?) ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3583:2: ( (lv_viewType_0_0= 'connector' ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?) ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3583:2: ( (lv_viewType_0_0= 'connector' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3584:1: (lv_viewType_0_0= 'connector' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3584:1: (lv_viewType_0_0= 'connector' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3585:3: lv_viewType_0_0= 'connector'
            {
            lv_viewType_0_0=(Token)match(input,61,FOLLOW_61_in_ruleRelationViewDef8080); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_viewType_0_0, grammarAccess.getRelationViewDefAccess().getViewTypeConnectorKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getRelationViewDefRule());
              	        }
                     		setWithLastConsumed(current, "viewType", lv_viewType_0_0, "connector");
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3598:2: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?) ) )?
            int alt81=2;
            switch ( input.LA(1) ) {
                case RULE_ID:
                    {
                    int LA81_1 = input.LA(2);

                    if ( (LA81_1==21) ) {
                        alt81=1;
                    }
                    }
                    break;
                case 21:
                    {
                    alt81=1;
                    }
                    break;
                case 55:
                    {
                    alt81=1;
                    }
                    break;
                case 63:
                    {
                    alt81=1;
                    }
                    break;
                case 29:
                    {
                    alt81=1;
                    }
                    break;
            }

            switch (alt81) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3600:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3600:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3601:2: ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?)
                    {
                    getUnorderedGroupHelper().enter(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1());
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3604:2: ( ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?)
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3605:3: ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+ {...}?
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3605:3: ( ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) ) )+
                    int cnt80=0;
                    loop80:
                    do {
                        int alt80=3;
                        int LA80_0 = input.LA(1);

                        if ( (LA80_0==29) ) {
                            int LA80_2 = input.LA(2);

                            if ( getUnorderedGroupHelper().canSelect(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 1) ) {
                                alt80=2;
                            }


                        }
                        else if ( (LA80_0==RULE_ID) ) {
                            int LA80_3 = input.LA(2);

                            if ( LA80_3 ==21 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 0) ) {
                                alt80=1;
                            }


                        }
                        else if ( (LA80_0==55) ) {
                            int LA80_4 = input.LA(2);

                            if ( getUnorderedGroupHelper().canSelect(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 1) ) {
                                alt80=2;
                            }


                        }
                        else if ( (LA80_0==63) ) {
                            int LA80_5 = input.LA(2);

                            if ( getUnorderedGroupHelper().canSelect(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 1) ) {
                                alt80=2;
                            }


                        }
                        else if ( LA80_0 ==21 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 0) ) {
                            alt80=1;
                        }


                        switch (alt80) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3607:4: ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3607:4: ({...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3608:5: {...}? => ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 0) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleRelationViewDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 0)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3608:112: ( ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3609:6: ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 0);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3612:6: ({...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3612:7: {...}? => ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleRelationViewDef", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3612:16: ( ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )? )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3612:17: ( (lv_name_2_0= RULE_ID ) )? otherlv_3= ':' (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )? (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )?
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3612:17: ( (lv_name_2_0= RULE_ID ) )?
                    	    int alt74=2;
                    	    int LA74_0 = input.LA(1);

                    	    if ( (LA74_0==RULE_ID) ) {
                    	        alt74=1;
                    	    }
                    	    switch (alt74) {
                    	        case 1 :
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3613:1: (lv_name_2_0= RULE_ID )
                    	            {
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3613:1: (lv_name_2_0= RULE_ID )
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3614:3: lv_name_2_0= RULE_ID
                    	            {
                    	            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRelationViewDef8156); if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	              			newLeafNode(lv_name_2_0, grammarAccess.getRelationViewDefAccess().getNameIDTerminalRuleCall_1_0_0_0()); 
                    	              		
                    	            }
                    	            if ( state.backtracking==0 ) {

                    	              	        if (current==null) {
                    	              	            current = createModelElement(grammarAccess.getRelationViewDefRule());
                    	              	        }
                    	                     		setWithLastConsumed(
                    	                     			current, 
                    	                     			"name",
                    	                      		lv_name_2_0, 
                    	                      		"ID");
                    	              	    
                    	            }

                    	            }


                    	            }
                    	            break;

                    	    }

                    	    otherlv_3=(Token)match(input,21,FOLLOW_21_in_ruleRelationViewDef8174); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getRelationViewDefAccess().getColonKeyword_1_0_1());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3634:1: (otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) ) )?
                    	    int alt76=2;
                    	    int LA76_0 = input.LA(1);

                    	    if ( (LA76_0==54) ) {
                    	        alt76=1;
                    	    }
                    	    switch (alt76) {
                    	        case 1 :
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3634:3: otherlv_4= 'editpart' otherlv_5= '=' ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) )
                    	            {
                    	            otherlv_4=(Token)match(input,54,FOLLOW_54_in_ruleRelationViewDef8187); if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	                  	newLeafNode(otherlv_4, grammarAccess.getRelationViewDefAccess().getEditpartKeyword_1_0_2_0());
                    	                  
                    	            }
                    	            otherlv_5=(Token)match(input,17,FOLLOW_17_in_ruleRelationViewDef8199); if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	                  	newLeafNode(otherlv_5, grammarAccess.getRelationViewDefAccess().getEqualsSignKeyword_1_0_2_1());
                    	                  
                    	            }
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3642:1: ( ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) ) )
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3643:1: ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) )
                    	            {
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3643:1: ( (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING ) )
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3644:1: (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING )
                    	            {
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3644:1: (lv_editpart_6_1= ruleQualifiedName | lv_editpart_6_2= RULE_STRING )
                    	            int alt75=2;
                    	            int LA75_0 = input.LA(1);

                    	            if ( (LA75_0==RULE_ID) ) {
                    	                alt75=1;
                    	            }
                    	            else if ( (LA75_0==RULE_STRING) ) {
                    	                alt75=2;
                    	            }
                    	            else {
                    	                if (state.backtracking>0) {state.failed=true; return current;}
                    	                NoViableAltException nvae =
                    	                    new NoViableAltException("", 75, 0, input);

                    	                throw nvae;
                    	            }
                    	            switch (alt75) {
                    	                case 1 :
                    	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3645:3: lv_editpart_6_1= ruleQualifiedName
                    	                    {
                    	                    if ( state.backtracking==0 ) {
                    	                       
                    	                      	        newCompositeNode(grammarAccess.getRelationViewDefAccess().getEditpartQualifiedNameParserRuleCall_1_0_2_2_0_0()); 
                    	                      	    
                    	                    }
                    	                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleRelationViewDef8222);
                    	                    lv_editpart_6_1=ruleQualifiedName();

                    	                    state._fsp--;
                    	                    if (state.failed) return current;
                    	                    if ( state.backtracking==0 ) {

                    	                      	        if (current==null) {
                    	                      	            current = createModelElementForParent(grammarAccess.getRelationViewDefRule());
                    	                      	        }
                    	                             		set(
                    	                             			current, 
                    	                             			"editpart",
                    	                              		lv_editpart_6_1, 
                    	                              		"QualifiedName");
                    	                      	        afterParserOrEnumRuleCall();
                    	                      	    
                    	                    }

                    	                    }
                    	                    break;
                    	                case 2 :
                    	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3660:8: lv_editpart_6_2= RULE_STRING
                    	                    {
                    	                    lv_editpart_6_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRelationViewDef8237); if (state.failed) return current;
                    	                    if ( state.backtracking==0 ) {

                    	                      			newLeafNode(lv_editpart_6_2, grammarAccess.getRelationViewDefAccess().getEditpartSTRINGTerminalRuleCall_1_0_2_2_0_1()); 
                    	                      		
                    	                    }
                    	                    if ( state.backtracking==0 ) {

                    	                      	        if (current==null) {
                    	                      	            current = createModelElement(grammarAccess.getRelationViewDefRule());
                    	                      	        }
                    	                             		setWithLastConsumed(
                    	                             			current, 
                    	                             			"editpart",
                    	                              		lv_editpart_6_2, 
                    	                              		"STRING");
                    	                      	    
                    	                    }

                    	                    }
                    	                    break;

                    	            }


                    	            }


                    	            }


                    	            }
                    	            break;

                    	    }

                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3678:4: (otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) ) )?
                    	    int alt77=2;
                    	    int LA77_0 = input.LA(1);

                    	    if ( (LA77_0==62) ) {
                    	        alt77=1;
                    	    }
                    	    switch (alt77) {
                    	        case 1 :
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3678:6: otherlv_7= 'style' otherlv_8= '=' ( (lv_style_9_0= ruleXConnectionStyleExpression ) )
                    	            {
                    	            otherlv_7=(Token)match(input,62,FOLLOW_62_in_ruleRelationViewDef8260); if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	                  	newLeafNode(otherlv_7, grammarAccess.getRelationViewDefAccess().getStyleKeyword_1_0_3_0());
                    	                  
                    	            }
                    	            otherlv_8=(Token)match(input,17,FOLLOW_17_in_ruleRelationViewDef8272); if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	                  	newLeafNode(otherlv_8, grammarAccess.getRelationViewDefAccess().getEqualsSignKeyword_1_0_3_1());
                    	                  
                    	            }
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3686:1: ( (lv_style_9_0= ruleXConnectionStyleExpression ) )
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3687:1: (lv_style_9_0= ruleXConnectionStyleExpression )
                    	            {
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3687:1: (lv_style_9_0= ruleXConnectionStyleExpression )
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3688:3: lv_style_9_0= ruleXConnectionStyleExpression
                    	            {
                    	            if ( state.backtracking==0 ) {
                    	               
                    	              	        newCompositeNode(grammarAccess.getRelationViewDefAccess().getStyleXConnectionStyleExpressionParserRuleCall_1_0_3_2_0()); 
                    	              	    
                    	            }
                    	            pushFollow(FOLLOW_ruleXConnectionStyleExpression_in_ruleRelationViewDef8293);
                    	            lv_style_9_0=ruleXConnectionStyleExpression();

                    	            state._fsp--;
                    	            if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	              	        if (current==null) {
                    	              	            current = createModelElementForParent(grammarAccess.getRelationViewDefRule());
                    	              	        }
                    	                     		set(
                    	                     			current, 
                    	                     			"style",
                    	                      		lv_style_9_0, 
                    	                      		"XConnectionStyleExpression");
                    	              	        afterParserOrEnumRuleCall();
                    	              	    
                    	            }

                    	            }


                    	            }


                    	            }
                    	            break;

                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1());

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3711:4: ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3711:4: ({...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3712:5: {...}? => ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 1) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleRelationViewDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 1)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3712:112: ( ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3713:6: ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1(), 1);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3716:6: ({...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3716:7: {...}? => ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleRelationViewDef", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3716:16: ( (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3716:17: (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )* ( (lv_constraints_12_0= ruleRelationConstraint ) )* ( ( 'end' )=>otherlv_13= 'end' )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3716:17: (otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) ) )*
                    	    loop78:
                    	    do {
                    	        int alt78=2;
                    	        int LA78_0 = input.LA(1);

                    	        if ( (LA78_0==55) ) {
                    	            alt78=1;
                    	        }


                    	        switch (alt78) {
                    	    	case 1 :
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3716:19: otherlv_10= 'add' ( (lv_children_11_0= ruleSubViewDef ) )
                    	    	    {
                    	    	    otherlv_10=(Token)match(input,55,FOLLOW_55_in_ruleRelationViewDef8364); if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	          	newLeafNode(otherlv_10, grammarAccess.getRelationViewDefAccess().getAddKeyword_1_1_0_0());
                    	    	          
                    	    	    }
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3720:1: ( (lv_children_11_0= ruleSubViewDef ) )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3721:1: (lv_children_11_0= ruleSubViewDef )
                    	    	    {
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3721:1: (lv_children_11_0= ruleSubViewDef )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3722:3: lv_children_11_0= ruleSubViewDef
                    	    	    {
                    	    	    if ( state.backtracking==0 ) {
                    	    	       
                    	    	      	        newCompositeNode(grammarAccess.getRelationViewDefAccess().getChildrenSubViewDefParserRuleCall_1_1_0_1_0()); 
                    	    	      	    
                    	    	    }
                    	    	    pushFollow(FOLLOW_ruleSubViewDef_in_ruleRelationViewDef8385);
                    	    	    lv_children_11_0=ruleSubViewDef();

                    	    	    state._fsp--;
                    	    	    if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	      	        if (current==null) {
                    	    	      	            current = createModelElementForParent(grammarAccess.getRelationViewDefRule());
                    	    	      	        }
                    	    	             		add(
                    	    	             			current, 
                    	    	             			"children",
                    	    	              		lv_children_11_0, 
                    	    	              		"SubViewDef");
                    	    	      	        afterParserOrEnumRuleCall();
                    	    	      	    
                    	    	    }

                    	    	    }


                    	    	    }


                    	    	    }
                    	    	    break;

                    	    	default :
                    	    	    break loop78;
                    	        }
                    	    } while (true);

                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3738:4: ( (lv_constraints_12_0= ruleRelationConstraint ) )*
                    	    loop79:
                    	    do {
                    	        int alt79=2;
                    	        int LA79_0 = input.LA(1);

                    	        if ( (LA79_0==63) ) {
                    	            alt79=1;
                    	        }


                    	        switch (alt79) {
                    	    	case 1 :
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3739:1: (lv_constraints_12_0= ruleRelationConstraint )
                    	    	    {
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3739:1: (lv_constraints_12_0= ruleRelationConstraint )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3740:3: lv_constraints_12_0= ruleRelationConstraint
                    	    	    {
                    	    	    if ( state.backtracking==0 ) {
                    	    	       
                    	    	      	        newCompositeNode(grammarAccess.getRelationViewDefAccess().getConstraintsRelationConstraintParserRuleCall_1_1_1_0()); 
                    	    	      	    
                    	    	    }
                    	    	    pushFollow(FOLLOW_ruleRelationConstraint_in_ruleRelationViewDef8408);
                    	    	    lv_constraints_12_0=ruleRelationConstraint();

                    	    	    state._fsp--;
                    	    	    if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	      	        if (current==null) {
                    	    	      	            current = createModelElementForParent(grammarAccess.getRelationViewDefRule());
                    	    	      	        }
                    	    	             		add(
                    	    	             			current, 
                    	    	             			"constraints",
                    	    	              		lv_constraints_12_0, 
                    	    	              		"RelationConstraint");
                    	    	      	        afterParserOrEnumRuleCall();
                    	    	      	    
                    	    	    }

                    	    	    }


                    	    	    }
                    	    	    break;

                    	    	default :
                    	    	    break loop79;
                    	        }
                    	    } while (true);

                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3756:3: ( ( 'end' )=>otherlv_13= 'end' )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3756:4: ( 'end' )=>otherlv_13= 'end'
                    	    {
                    	    otherlv_13=(Token)match(input,29,FOLLOW_29_in_ruleRelationViewDef8429); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_13, grammarAccess.getRelationViewDefAccess().getEndKeyword_1_1_2());
                    	          
                    	    }

                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1());

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt80 >= 1 ) break loop80;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(80, input);
                                throw eee;
                        }
                        cnt80++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1()) ) {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        throw new FailedPredicateException(input, "ruleRelationViewDef", "getUnorderedGroupHelper().canLeave(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1())");
                    }

                    }


                    }

                    getUnorderedGroupHelper().leave(grammarAccess.getRelationViewDefAccess().getUnorderedGroup_1());

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRelationViewDef"


    // $ANTLR start "entryRuleRelationConstraint"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3784:1: entryRuleRelationConstraint returns [EObject current=null] : iv_ruleRelationConstraint= ruleRelationConstraint EOF ;
    public final EObject entryRuleRelationConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRelationConstraint = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3785:2: (iv_ruleRelationConstraint= ruleRelationConstraint EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3786:2: iv_ruleRelationConstraint= ruleRelationConstraint EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRelationConstraintRule()); 
            }
            pushFollow(FOLLOW_ruleRelationConstraint_in_entryRuleRelationConstraint8514);
            iv_ruleRelationConstraint=ruleRelationConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRelationConstraint; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleRelationConstraint8524); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRelationConstraint"


    // $ANTLR start "ruleRelationConstraint"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3793:1: ruleRelationConstraint returns [EObject current=null] : (otherlv_0= 'constraint' ( (lv_forbidden_1_0= 'forbidden' ) )? ( ( ruleQualifiedName ) ) (otherlv_3= ',' ( ( ruleQualifiedName ) ) )* otherlv_5= 'to' ( ( ruleQualifiedName ) ) (otherlv_7= ',' ( ( ruleQualifiedName ) ) )* ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?) ) )? ) ;
    public final EObject ruleRelationConstraint() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_forbidden_1_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        EObject lv_style_13_0 = null;

        EObject lv_validators_16_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3796:28: ( (otherlv_0= 'constraint' ( (lv_forbidden_1_0= 'forbidden' ) )? ( ( ruleQualifiedName ) ) (otherlv_3= ',' ( ( ruleQualifiedName ) ) )* otherlv_5= 'to' ( ( ruleQualifiedName ) ) (otherlv_7= ',' ( ( ruleQualifiedName ) ) )* ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?) ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3797:1: (otherlv_0= 'constraint' ( (lv_forbidden_1_0= 'forbidden' ) )? ( ( ruleQualifiedName ) ) (otherlv_3= ',' ( ( ruleQualifiedName ) ) )* otherlv_5= 'to' ( ( ruleQualifiedName ) ) (otherlv_7= ',' ( ( ruleQualifiedName ) ) )* ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?) ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3797:1: (otherlv_0= 'constraint' ( (lv_forbidden_1_0= 'forbidden' ) )? ( ( ruleQualifiedName ) ) (otherlv_3= ',' ( ( ruleQualifiedName ) ) )* otherlv_5= 'to' ( ( ruleQualifiedName ) ) (otherlv_7= ',' ( ( ruleQualifiedName ) ) )* ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?) ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3797:3: otherlv_0= 'constraint' ( (lv_forbidden_1_0= 'forbidden' ) )? ( ( ruleQualifiedName ) ) (otherlv_3= ',' ( ( ruleQualifiedName ) ) )* otherlv_5= 'to' ( ( ruleQualifiedName ) ) (otherlv_7= ',' ( ( ruleQualifiedName ) ) )* ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?) ) )?
            {
            otherlv_0=(Token)match(input,63,FOLLOW_63_in_ruleRelationConstraint8561); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getRelationConstraintAccess().getConstraintKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3801:1: ( (lv_forbidden_1_0= 'forbidden' ) )?
            int alt82=2;
            int LA82_0 = input.LA(1);

            if ( (LA82_0==64) ) {
                alt82=1;
            }
            switch (alt82) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3802:1: (lv_forbidden_1_0= 'forbidden' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3802:1: (lv_forbidden_1_0= 'forbidden' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3803:3: lv_forbidden_1_0= 'forbidden'
                    {
                    lv_forbidden_1_0=(Token)match(input,64,FOLLOW_64_in_ruleRelationConstraint8579); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_forbidden_1_0, grammarAccess.getRelationConstraintAccess().getForbiddenForbiddenKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getRelationConstraintRule());
                      	        }
                             		setWithLastConsumed(current, "forbidden", true, "forbidden");
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3816:3: ( ( ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3817:1: ( ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3817:1: ( ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3818:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getRelationConstraintRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getRelationConstraintAccess().getSourcesElementDefCrossReference_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleRelationConstraint8616);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3831:2: (otherlv_3= ',' ( ( ruleQualifiedName ) ) )*
            loop83:
            do {
                int alt83=2;
                int LA83_0 = input.LA(1);

                if ( (LA83_0==37) ) {
                    alt83=1;
                }


                switch (alt83) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3831:4: otherlv_3= ',' ( ( ruleQualifiedName ) )
            	    {
            	    otherlv_3=(Token)match(input,37,FOLLOW_37_in_ruleRelationConstraint8629); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_3, grammarAccess.getRelationConstraintAccess().getCommaKeyword_3_0());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3835:1: ( ( ruleQualifiedName ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3836:1: ( ruleQualifiedName )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3836:1: ( ruleQualifiedName )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3837:3: ruleQualifiedName
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getRelationConstraintRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getRelationConstraintAccess().getSourcesElementDefCrossReference_3_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleQualifiedName_in_ruleRelationConstraint8652);
            	    ruleQualifiedName();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop83;
                }
            } while (true);

            otherlv_5=(Token)match(input,65,FOLLOW_65_in_ruleRelationConstraint8666); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getRelationConstraintAccess().getToKeyword_4());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3854:1: ( ( ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3855:1: ( ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3855:1: ( ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3856:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getRelationConstraintRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getRelationConstraintAccess().getTargetsElementDefCrossReference_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleRelationConstraint8689);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3869:2: (otherlv_7= ',' ( ( ruleQualifiedName ) ) )*
            loop84:
            do {
                int alt84=2;
                int LA84_0 = input.LA(1);

                if ( (LA84_0==37) ) {
                    alt84=1;
                }


                switch (alt84) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3869:4: otherlv_7= ',' ( ( ruleQualifiedName ) )
            	    {
            	    otherlv_7=(Token)match(input,37,FOLLOW_37_in_ruleRelationConstraint8702); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_7, grammarAccess.getRelationConstraintAccess().getCommaKeyword_6_0());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3873:1: ( ( ruleQualifiedName ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3874:1: ( ruleQualifiedName )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3874:1: ( ruleQualifiedName )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3875:3: ruleQualifiedName
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getRelationConstraintRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getRelationConstraintAccess().getTargetsElementDefCrossReference_6_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleQualifiedName_in_ruleRelationConstraint8725);
            	    ruleQualifiedName();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop84;
                }
            } while (true);

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3888:4: ( ( ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?) ) )?
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==21||LA88_0==66) ) {
                alt88=1;
            }
            switch (alt88) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3890:1: ( ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3890:1: ( ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3891:2: ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?)
                    {
                    getUnorderedGroupHelper().enter(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7());
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3894:2: ( ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?)
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3895:3: ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+ {...}?
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3895:3: ( ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) ) )+
                    int cnt87=0;
                    loop87:
                    do {
                        int alt87=3;
                        int LA87_0 = input.LA(1);

                        if ( LA87_0 ==21 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7(), 0) ) {
                            alt87=1;
                        }
                        else if ( LA87_0 ==66 && getUnorderedGroupHelper().canSelect(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7(), 1) ) {
                            alt87=2;
                        }


                        switch (alt87) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3897:4: ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3897:4: ({...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3898:5: {...}? => ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7(), 0) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleRelationConstraint", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7(), 0)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3898:115: ( ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3899:6: ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7(), 0);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3902:6: ({...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3902:7: {...}? => (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleRelationConstraint", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3902:16: (otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )? )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3902:18: otherlv_10= ':' (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )?
                    	    {
                    	    otherlv_10=(Token)match(input,21,FOLLOW_21_in_ruleRelationConstraint8785); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_10, grammarAccess.getRelationConstraintAccess().getColonKeyword_7_0_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3906:1: (otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) ) )?
                    	    int alt85=2;
                    	    int LA85_0 = input.LA(1);

                    	    if ( (LA85_0==62) ) {
                    	        alt85=1;
                    	    }
                    	    switch (alt85) {
                    	        case 1 :
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3906:3: otherlv_11= 'style' otherlv_12= '=' ( (lv_style_13_0= ruleXConnectionStyleExpression ) )
                    	            {
                    	            otherlv_11=(Token)match(input,62,FOLLOW_62_in_ruleRelationConstraint8798); if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	                  	newLeafNode(otherlv_11, grammarAccess.getRelationConstraintAccess().getStyleKeyword_7_0_1_0());
                    	                  
                    	            }
                    	            otherlv_12=(Token)match(input,17,FOLLOW_17_in_ruleRelationConstraint8810); if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	                  	newLeafNode(otherlv_12, grammarAccess.getRelationConstraintAccess().getEqualsSignKeyword_7_0_1_1());
                    	                  
                    	            }
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3914:1: ( (lv_style_13_0= ruleXConnectionStyleExpression ) )
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3915:1: (lv_style_13_0= ruleXConnectionStyleExpression )
                    	            {
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3915:1: (lv_style_13_0= ruleXConnectionStyleExpression )
                    	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3916:3: lv_style_13_0= ruleXConnectionStyleExpression
                    	            {
                    	            if ( state.backtracking==0 ) {
                    	               
                    	              	        newCompositeNode(grammarAccess.getRelationConstraintAccess().getStyleXConnectionStyleExpressionParserRuleCall_7_0_1_2_0()); 
                    	              	    
                    	            }
                    	            pushFollow(FOLLOW_ruleXConnectionStyleExpression_in_ruleRelationConstraint8831);
                    	            lv_style_13_0=ruleXConnectionStyleExpression();

                    	            state._fsp--;
                    	            if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	              	        if (current==null) {
                    	              	            current = createModelElementForParent(grammarAccess.getRelationConstraintRule());
                    	              	        }
                    	                     		set(
                    	                     			current, 
                    	                     			"style",
                    	                      		lv_style_13_0, 
                    	                      		"XConnectionStyleExpression");
                    	              	        afterParserOrEnumRuleCall();
                    	              	    
                    	            }

                    	            }


                    	            }


                    	            }
                    	            break;

                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7());

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3939:4: ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3939:4: ({...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3940:5: {...}? => ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7(), 1) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleRelationConstraint", "getUnorderedGroupHelper().canSelect(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7(), 1)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3940:115: ( ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+ )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3941:6: ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7(), 1);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3944:6: ({...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) ) )+
                    	    int cnt86=0;
                    	    loop86:
                    	    do {
                    	        int alt86=2;
                    	        int LA86_0 = input.LA(1);

                    	        if ( (LA86_0==66) ) {
                    	            int LA86_2 = input.LA(2);

                    	            if ( ((true)) ) {
                    	                alt86=1;
                    	            }


                    	        }


                    	        switch (alt86) {
                    	    	case 1 :
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3944:7: {...}? => (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) )
                    	    	    {
                    	    	    if ( !((true)) ) {
                    	    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	    	        throw new FailedPredicateException(input, "ruleRelationConstraint", "true");
                    	    	    }
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3944:16: (otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) ) )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3944:18: otherlv_14= 'validator' otherlv_15= '=' ( (lv_validators_16_0= ruleXValidatorExpression ) )
                    	    	    {
                    	    	    otherlv_14=(Token)match(input,66,FOLLOW_66_in_ruleRelationConstraint8901); if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	          	newLeafNode(otherlv_14, grammarAccess.getRelationConstraintAccess().getValidatorKeyword_7_1_0());
                    	    	          
                    	    	    }
                    	    	    otherlv_15=(Token)match(input,17,FOLLOW_17_in_ruleRelationConstraint8913); if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	          	newLeafNode(otherlv_15, grammarAccess.getRelationConstraintAccess().getEqualsSignKeyword_7_1_1());
                    	    	          
                    	    	    }
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3952:1: ( (lv_validators_16_0= ruleXValidatorExpression ) )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3953:1: (lv_validators_16_0= ruleXValidatorExpression )
                    	    	    {
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3953:1: (lv_validators_16_0= ruleXValidatorExpression )
                    	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3954:3: lv_validators_16_0= ruleXValidatorExpression
                    	    	    {
                    	    	    if ( state.backtracking==0 ) {
                    	    	       
                    	    	      	        newCompositeNode(grammarAccess.getRelationConstraintAccess().getValidatorsXValidatorExpressionParserRuleCall_7_1_2_0()); 
                    	    	      	    
                    	    	    }
                    	    	    pushFollow(FOLLOW_ruleXValidatorExpression_in_ruleRelationConstraint8934);
                    	    	    lv_validators_16_0=ruleXValidatorExpression();

                    	    	    state._fsp--;
                    	    	    if (state.failed) return current;
                    	    	    if ( state.backtracking==0 ) {

                    	    	      	        if (current==null) {
                    	    	      	            current = createModelElementForParent(grammarAccess.getRelationConstraintRule());
                    	    	      	        }
                    	    	             		add(
                    	    	             			current, 
                    	    	             			"validators",
                    	    	              		lv_validators_16_0, 
                    	    	              		"XValidatorExpression");
                    	    	      	        afterParserOrEnumRuleCall();
                    	    	      	    
                    	    	    }

                    	    	    }


                    	    	    }


                    	    	    }


                    	    	    }
                    	    	    break;

                    	    	default :
                    	    	    if ( cnt86 >= 1 ) break loop86;
                    	    	    if (state.backtracking>0) {state.failed=true; return current;}
                    	                EarlyExitException eee =
                    	                    new EarlyExitException(86, input);
                    	                throw eee;
                    	        }
                    	        cnt86++;
                    	    } while (true);

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7());

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt87 >= 1 ) break loop87;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(87, input);
                                throw eee;
                        }
                        cnt87++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7()) ) {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        throw new FailedPredicateException(input, "ruleRelationConstraint", "getUnorderedGroupHelper().canLeave(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7())");
                    }

                    }


                    }

                    getUnorderedGroupHelper().leave(grammarAccess.getRelationConstraintAccess().getUnorderedGroup_7());

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRelationConstraint"


    // $ANTLR start "entryRuleConnectionStyleDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3993:1: entryRuleConnectionStyleDef returns [EObject current=null] : iv_ruleConnectionStyleDef= ruleConnectionStyleDef EOF ;
    public final EObject entryRuleConnectionStyleDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConnectionStyleDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3994:2: (iv_ruleConnectionStyleDef= ruleConnectionStyleDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3995:2: iv_ruleConnectionStyleDef= ruleConnectionStyleDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConnectionStyleDefRule()); 
            }
            pushFollow(FOLLOW_ruleConnectionStyleDef_in_entryRuleConnectionStyleDef9019);
            iv_ruleConnectionStyleDef=ruleConnectionStyleDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConnectionStyleDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleConnectionStyleDef9029); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConnectionStyleDef"


    // $ANTLR start "ruleConnectionStyleDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4002:1: ruleConnectionStyleDef returns [EObject current=null] : ( () otherlv_1= 'connectionstyle' ( (lv_name_2_0= ruleQualifiedName ) )? otherlv_3= ':' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_15= 'end' ) ) ;
    public final EObject ruleConnectionStyleDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token lv_widthSet_5_0=null;
        Token otherlv_6=null;
        Token lv_width_7_0=null;
        Token lv_lineStyleSet_8_0=null;
        Token otherlv_9=null;
        Token lv_colorSet_11_0=null;
        Token otherlv_12=null;
        Token otherlv_15=null;
        AntlrDatatypeRuleToken lv_name_2_0 = null;

        Enumerator lv_style_10_0 = null;

        EObject lv_color_13_0 = null;

        EObject lv_decorators_14_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4005:28: ( ( () otherlv_1= 'connectionstyle' ( (lv_name_2_0= ruleQualifiedName ) )? otherlv_3= ':' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_15= 'end' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4006:1: ( () otherlv_1= 'connectionstyle' ( (lv_name_2_0= ruleQualifiedName ) )? otherlv_3= ':' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_15= 'end' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4006:1: ( () otherlv_1= 'connectionstyle' ( (lv_name_2_0= ruleQualifiedName ) )? otherlv_3= ':' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_15= 'end' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4006:2: () otherlv_1= 'connectionstyle' ( (lv_name_2_0= ruleQualifiedName ) )? otherlv_3= ':' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* ) ) ) ( ( 'end' )=>otherlv_15= 'end' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4006:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4007:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getConnectionStyleDefAccess().getConnectionStyleDefAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,67,FOLLOW_67_in_ruleConnectionStyleDef9075); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getConnectionStyleDefAccess().getConnectionstyleKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4016:1: ( (lv_name_2_0= ruleQualifiedName ) )?
            int alt89=2;
            int LA89_0 = input.LA(1);

            if ( (LA89_0==RULE_ID) ) {
                alt89=1;
            }
            switch (alt89) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4017:1: (lv_name_2_0= ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4017:1: (lv_name_2_0= ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4018:3: lv_name_2_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getConnectionStyleDefAccess().getNameQualifiedNameParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleConnectionStyleDef9096);
                    lv_name_2_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getConnectionStyleDefRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_2_0, 
                              		"QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,21,FOLLOW_21_in_ruleConnectionStyleDef9109); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getConnectionStyleDefAccess().getColonKeyword_3());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4038:1: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4040:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4040:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4041:2: ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* )
            {
            getUnorderedGroupHelper().enter(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4());
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4044:2: ( ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4045:3: ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )*
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4045:3: ( ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) ) )*
            loop91:
            do {
                int alt91=5;
                int LA91_0 = input.LA(1);

                if ( LA91_0 ==68 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 0) ) {
                    alt91=1;
                }
                else if ( LA91_0 ==62 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 1) ) {
                    alt91=2;
                }
                else if ( LA91_0 ==69 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 2) ) {
                    alt91=3;
                }
                else if ( LA91_0 ==70 && getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 3) ) {
                    alt91=4;
                }


                switch (alt91) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4047:4: ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4047:4: ({...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4048:5: {...}? => ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 0) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleConnectionStyleDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 0)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4048:115: ( ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4049:6: ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 0);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4052:6: ({...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4052:7: {...}? => ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleConnectionStyleDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4052:16: ( ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4052:17: ( (lv_widthSet_5_0= 'width' ) ) otherlv_6= '=' ( (lv_width_7_0= RULE_INT ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4052:17: ( (lv_widthSet_5_0= 'width' ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4053:1: (lv_widthSet_5_0= 'width' )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4053:1: (lv_widthSet_5_0= 'width' )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4054:3: lv_widthSet_5_0= 'width'
            	    {
            	    lv_widthSet_5_0=(Token)match(input,68,FOLLOW_68_in_ruleConnectionStyleDef9173); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_widthSet_5_0, grammarAccess.getConnectionStyleDefAccess().getWidthSetWidthKeyword_4_0_0_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getConnectionStyleDefRule());
            	      	        }
            	             		setWithLastConsumed(current, "widthSet", true, "width");
            	      	    
            	    }

            	    }


            	    }

            	    otherlv_6=(Token)match(input,17,FOLLOW_17_in_ruleConnectionStyleDef9198); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_6, grammarAccess.getConnectionStyleDefAccess().getEqualsSignKeyword_4_0_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4071:1: ( (lv_width_7_0= RULE_INT ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4072:1: (lv_width_7_0= RULE_INT )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4072:1: (lv_width_7_0= RULE_INT )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4073:3: lv_width_7_0= RULE_INT
            	    {
            	    lv_width_7_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleConnectionStyleDef9215); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      			newLeafNode(lv_width_7_0, grammarAccess.getConnectionStyleDefAccess().getWidthINTTerminalRuleCall_4_0_2_0()); 
            	      		
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getConnectionStyleDefRule());
            	      	        }
            	             		setWithLastConsumed(
            	             			current, 
            	             			"width",
            	              		lv_width_7_0, 
            	              		"INT");
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4());

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4096:4: ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4096:4: ({...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4097:5: {...}? => ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 1) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleConnectionStyleDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 1)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4097:115: ( ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4098:6: ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 1);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4101:6: ({...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4101:7: {...}? => ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleConnectionStyleDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4101:16: ( ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4101:17: ( (lv_lineStyleSet_8_0= 'style' ) ) otherlv_9= '=' ( (lv_style_10_0= ruleLineStyle ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4101:17: ( (lv_lineStyleSet_8_0= 'style' ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4102:1: (lv_lineStyleSet_8_0= 'style' )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4102:1: (lv_lineStyleSet_8_0= 'style' )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4103:3: lv_lineStyleSet_8_0= 'style'
            	    {
            	    lv_lineStyleSet_8_0=(Token)match(input,62,FOLLOW_62_in_ruleConnectionStyleDef9294); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_lineStyleSet_8_0, grammarAccess.getConnectionStyleDefAccess().getLineStyleSetStyleKeyword_4_1_0_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getConnectionStyleDefRule());
            	      	        }
            	             		setWithLastConsumed(current, "lineStyleSet", true, "style");
            	      	    
            	    }

            	    }


            	    }

            	    otherlv_9=(Token)match(input,17,FOLLOW_17_in_ruleConnectionStyleDef9319); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_9, grammarAccess.getConnectionStyleDefAccess().getEqualsSignKeyword_4_1_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4120:1: ( (lv_style_10_0= ruleLineStyle ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4121:1: (lv_style_10_0= ruleLineStyle )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4121:1: (lv_style_10_0= ruleLineStyle )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4122:3: lv_style_10_0= ruleLineStyle
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getConnectionStyleDefAccess().getStyleLineStyleEnumRuleCall_4_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleLineStyle_in_ruleConnectionStyleDef9340);
            	    lv_style_10_0=ruleLineStyle();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getConnectionStyleDefRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"style",
            	              		lv_style_10_0, 
            	              		"LineStyle");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4());

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4145:4: ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4145:4: ({...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4146:5: {...}? => ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 2) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleConnectionStyleDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 2)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4146:115: ( ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4147:6: ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 2);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4150:6: ({...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4150:7: {...}? => ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleConnectionStyleDef", "true");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4150:16: ( ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4150:17: ( (lv_colorSet_11_0= 'color' ) ) otherlv_12= '=' ( (lv_color_13_0= ruleXColorExpression ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4150:17: ( (lv_colorSet_11_0= 'color' ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4151:1: (lv_colorSet_11_0= 'color' )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4151:1: (lv_colorSet_11_0= 'color' )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4152:3: lv_colorSet_11_0= 'color'
            	    {
            	    lv_colorSet_11_0=(Token)match(input,69,FOLLOW_69_in_ruleConnectionStyleDef9414); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_colorSet_11_0, grammarAccess.getConnectionStyleDefAccess().getColorSetColorKeyword_4_2_0_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getConnectionStyleDefRule());
            	      	        }
            	             		setWithLastConsumed(current, "colorSet", true, "color");
            	      	    
            	    }

            	    }


            	    }

            	    otherlv_12=(Token)match(input,17,FOLLOW_17_in_ruleConnectionStyleDef9439); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_12, grammarAccess.getConnectionStyleDefAccess().getEqualsSignKeyword_4_2_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4169:1: ( (lv_color_13_0= ruleXColorExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4170:1: (lv_color_13_0= ruleXColorExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4170:1: (lv_color_13_0= ruleXColorExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4171:3: lv_color_13_0= ruleXColorExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getConnectionStyleDefAccess().getColorXColorExpressionParserRuleCall_4_2_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXColorExpression_in_ruleConnectionStyleDef9460);
            	    lv_color_13_0=ruleXColorExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getConnectionStyleDefRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"color",
            	              		lv_color_13_0, 
            	              		"XColorExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4());

            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4194:4: ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4194:4: ({...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4195:5: {...}? => ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 3) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleConnectionStyleDef", "getUnorderedGroupHelper().canSelect(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 3)");
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4195:115: ( ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+ )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4196:6: ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4(), 3);
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4199:6: ({...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) ) )+
            	    int cnt90=0;
            	    loop90:
            	    do {
            	        int alt90=2;
            	        int LA90_0 = input.LA(1);

            	        if ( (LA90_0==70) ) {
            	            int LA90_2 = input.LA(2);

            	            if ( ((true)) ) {
            	                alt90=1;
            	            }


            	        }


            	        switch (alt90) {
            	    	case 1 :
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4199:7: {...}? => ( (lv_decorators_14_0= ruleConnectionDecorator ) )
            	    	    {
            	    	    if ( !((true)) ) {
            	    	        if (state.backtracking>0) {state.failed=true; return current;}
            	    	        throw new FailedPredicateException(input, "ruleConnectionStyleDef", "true");
            	    	    }
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4199:16: ( (lv_decorators_14_0= ruleConnectionDecorator ) )
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4200:1: (lv_decorators_14_0= ruleConnectionDecorator )
            	    	    {
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4200:1: (lv_decorators_14_0= ruleConnectionDecorator )
            	    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4201:3: lv_decorators_14_0= ruleConnectionDecorator
            	    	    {
            	    	    if ( state.backtracking==0 ) {
            	    	       
            	    	      	        newCompositeNode(grammarAccess.getConnectionStyleDefAccess().getDecoratorsConnectionDecoratorParserRuleCall_4_3_0()); 
            	    	      	    
            	    	    }
            	    	    pushFollow(FOLLOW_ruleConnectionDecorator_in_ruleConnectionStyleDef9536);
            	    	    lv_decorators_14_0=ruleConnectionDecorator();

            	    	    state._fsp--;
            	    	    if (state.failed) return current;
            	    	    if ( state.backtracking==0 ) {

            	    	      	        if (current==null) {
            	    	      	            current = createModelElementForParent(grammarAccess.getConnectionStyleDefRule());
            	    	      	        }
            	    	             		add(
            	    	             			current, 
            	    	             			"decorators",
            	    	              		lv_decorators_14_0, 
            	    	              		"ConnectionDecorator");
            	    	      	        afterParserOrEnumRuleCall();
            	    	      	    
            	    	    }

            	    	    }


            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    if ( cnt90 >= 1 ) break loop90;
            	    	    if (state.backtracking>0) {state.failed=true; return current;}
            	                EarlyExitException eee =
            	                    new EarlyExitException(90, input);
            	                throw eee;
            	        }
            	        cnt90++;
            	    } while (true);

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4());

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop91;
                }
            } while (true);


            }


            }

            getUnorderedGroupHelper().leave(grammarAccess.getConnectionStyleDefAccess().getUnorderedGroup_4());

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4231:2: ( ( 'end' )=>otherlv_15= 'end' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4231:3: ( 'end' )=>otherlv_15= 'end'
            {
            otherlv_15=(Token)match(input,29,FOLLOW_29_in_ruleConnectionStyleDef9597); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_15, grammarAccess.getConnectionStyleDefAccess().getEndKeyword_5());
                  
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConnectionStyleDef"


    // $ANTLR start "entryRuleConnectionDecorator"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4244:1: entryRuleConnectionDecorator returns [EObject current=null] : iv_ruleConnectionDecorator= ruleConnectionDecorator EOF ;
    public final EObject entryRuleConnectionDecorator() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConnectionDecorator = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4245:2: (iv_ruleConnectionDecorator= ruleConnectionDecorator EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4246:2: iv_ruleConnectionDecorator= ruleConnectionDecorator EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConnectionDecoratorRule()); 
            }
            pushFollow(FOLLOW_ruleConnectionDecorator_in_entryRuleConnectionDecorator9634);
            iv_ruleConnectionDecorator=ruleConnectionDecorator();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConnectionDecorator; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleConnectionDecorator9644); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConnectionDecorator"


    // $ANTLR start "ruleConnectionDecorator"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4253:1: ruleConnectionDecorator returns [EObject current=null] : (otherlv_0= 'decorator' (otherlv_1= '[' ( (lv_paramaters_2_0= ruleDecoratorParameter ) ) (otherlv_3= ',' ( (lv_paramaters_4_0= ruleDecoratorParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_decorator_7_0= ruleXDecoratorExpression ) ) ) ;
    public final EObject ruleConnectionDecorator() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        EObject lv_paramaters_2_0 = null;

        EObject lv_paramaters_4_0 = null;

        EObject lv_decorator_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4256:28: ( (otherlv_0= 'decorator' (otherlv_1= '[' ( (lv_paramaters_2_0= ruleDecoratorParameter ) ) (otherlv_3= ',' ( (lv_paramaters_4_0= ruleDecoratorParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_decorator_7_0= ruleXDecoratorExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4257:1: (otherlv_0= 'decorator' (otherlv_1= '[' ( (lv_paramaters_2_0= ruleDecoratorParameter ) ) (otherlv_3= ',' ( (lv_paramaters_4_0= ruleDecoratorParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_decorator_7_0= ruleXDecoratorExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4257:1: (otherlv_0= 'decorator' (otherlv_1= '[' ( (lv_paramaters_2_0= ruleDecoratorParameter ) ) (otherlv_3= ',' ( (lv_paramaters_4_0= ruleDecoratorParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_decorator_7_0= ruleXDecoratorExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4257:3: otherlv_0= 'decorator' (otherlv_1= '[' ( (lv_paramaters_2_0= ruleDecoratorParameter ) ) (otherlv_3= ',' ( (lv_paramaters_4_0= ruleDecoratorParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_decorator_7_0= ruleXDecoratorExpression ) )
            {
            otherlv_0=(Token)match(input,70,FOLLOW_70_in_ruleConnectionDecorator9681); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getConnectionDecoratorAccess().getDecoratorKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4261:1: (otherlv_1= '[' ( (lv_paramaters_2_0= ruleDecoratorParameter ) ) (otherlv_3= ',' ( (lv_paramaters_4_0= ruleDecoratorParameter ) ) )* otherlv_5= ']' )?
            int alt93=2;
            int LA93_0 = input.LA(1);

            if ( (LA93_0==36) ) {
                alt93=1;
            }
            switch (alt93) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4261:3: otherlv_1= '[' ( (lv_paramaters_2_0= ruleDecoratorParameter ) ) (otherlv_3= ',' ( (lv_paramaters_4_0= ruleDecoratorParameter ) ) )* otherlv_5= ']'
                    {
                    otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleConnectionDecorator9694); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getConnectionDecoratorAccess().getLeftSquareBracketKeyword_1_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4265:1: ( (lv_paramaters_2_0= ruleDecoratorParameter ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4266:1: (lv_paramaters_2_0= ruleDecoratorParameter )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4266:1: (lv_paramaters_2_0= ruleDecoratorParameter )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4267:3: lv_paramaters_2_0= ruleDecoratorParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getConnectionDecoratorAccess().getParamatersDecoratorParameterParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDecoratorParameter_in_ruleConnectionDecorator9715);
                    lv_paramaters_2_0=ruleDecoratorParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getConnectionDecoratorRule());
                      	        }
                             		add(
                             			current, 
                             			"paramaters",
                              		lv_paramaters_2_0, 
                              		"DecoratorParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4283:2: (otherlv_3= ',' ( (lv_paramaters_4_0= ruleDecoratorParameter ) ) )*
                    loop92:
                    do {
                        int alt92=2;
                        int LA92_0 = input.LA(1);

                        if ( (LA92_0==37) ) {
                            alt92=1;
                        }


                        switch (alt92) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4283:4: otherlv_3= ',' ( (lv_paramaters_4_0= ruleDecoratorParameter ) )
                    	    {
                    	    otherlv_3=(Token)match(input,37,FOLLOW_37_in_ruleConnectionDecorator9728); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getConnectionDecoratorAccess().getCommaKeyword_1_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4287:1: ( (lv_paramaters_4_0= ruleDecoratorParameter ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4288:1: (lv_paramaters_4_0= ruleDecoratorParameter )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4288:1: (lv_paramaters_4_0= ruleDecoratorParameter )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4289:3: lv_paramaters_4_0= ruleDecoratorParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getConnectionDecoratorAccess().getParamatersDecoratorParameterParserRuleCall_1_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleDecoratorParameter_in_ruleConnectionDecorator9749);
                    	    lv_paramaters_4_0=ruleDecoratorParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getConnectionDecoratorRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"paramaters",
                    	              		lv_paramaters_4_0, 
                    	              		"DecoratorParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop92;
                        }
                    } while (true);

                    otherlv_5=(Token)match(input,38,FOLLOW_38_in_ruleConnectionDecorator9763); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getConnectionDecoratorAccess().getRightSquareBracketKeyword_1_3());
                          
                    }

                    }
                    break;

            }

            otherlv_6=(Token)match(input,17,FOLLOW_17_in_ruleConnectionDecorator9777); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getConnectionDecoratorAccess().getEqualsSignKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4313:1: ( (lv_decorator_7_0= ruleXDecoratorExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4314:1: (lv_decorator_7_0= ruleXDecoratorExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4314:1: (lv_decorator_7_0= ruleXDecoratorExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4315:3: lv_decorator_7_0= ruleXDecoratorExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getConnectionDecoratorAccess().getDecoratorXDecoratorExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXDecoratorExpression_in_ruleConnectionDecorator9798);
            lv_decorator_7_0=ruleXDecoratorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getConnectionDecoratorRule());
              	        }
                     		set(
                     			current, 
                     			"decorator",
                      		lv_decorator_7_0, 
                      		"XDecoratorExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConnectionDecorator"


    // $ANTLR start "entryRuleDecoratorDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4339:1: entryRuleDecoratorDef returns [EObject current=null] : iv_ruleDecoratorDef= ruleDecoratorDef EOF ;
    public final EObject entryRuleDecoratorDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDecoratorDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4340:2: (iv_ruleDecoratorDef= ruleDecoratorDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4341:2: iv_ruleDecoratorDef= ruleDecoratorDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDecoratorDefRule()); 
            }
            pushFollow(FOLLOW_ruleDecoratorDef_in_entryRuleDecoratorDef9834);
            iv_ruleDecoratorDef=ruleDecoratorDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDecoratorDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDecoratorDef9844); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDecoratorDef"


    // $ANTLR start "ruleDecoratorDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4348:1: ruleDecoratorDef returns [EObject current=null] : ( () otherlv_1= 'decorator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )? ) ;
    public final EObject ruleDecoratorDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_2=null;
        Token otherlv_3=null;
        Token lv_clazz_4_2=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_name_2_1 = null;

        AntlrDatatypeRuleToken lv_clazz_4_1 = null;

        EObject lv_tags_8_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4351:28: ( ( () otherlv_1= 'decorator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4352:1: ( () otherlv_1= 'decorator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4352:1: ( () otherlv_1= 'decorator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4352:2: () otherlv_1= 'decorator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4352:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4353:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getDecoratorDefAccess().getDecoratorDefAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,70,FOLLOW_70_in_ruleDecoratorDef9890); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getDecoratorDefAccess().getDecoratorKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4362:1: ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )?
            int alt95=2;
            int LA95_0 = input.LA(1);

            if ( (LA95_0==RULE_ID) && (synpred10_InternalUnicornLanguageDefinition())) {
                alt95=1;
            }
            else if ( (LA95_0==RULE_STRING) && (synpred10_InternalUnicornLanguageDefinition())) {
                alt95=1;
            }
            switch (alt95) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4362:2: ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4372:1: ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4373:1: (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4373:1: (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING )
                    int alt94=2;
                    int LA94_0 = input.LA(1);

                    if ( (LA94_0==RULE_ID) ) {
                        alt94=1;
                    }
                    else if ( (LA94_0==RULE_STRING) ) {
                        alt94=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 94, 0, input);

                        throw nvae;
                    }
                    switch (alt94) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4374:3: lv_name_2_1= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getDecoratorDefAccess().getNameQualifiedNameParserRuleCall_2_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleQualifiedName_in_ruleDecoratorDef9938);
                            lv_name_2_1=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getDecoratorDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"name",
                                      		lv_name_2_1, 
                                      		"QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4389:8: lv_name_2_2= RULE_STRING
                            {
                            lv_name_2_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDecoratorDef9953); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_name_2_2, grammarAccess.getDecoratorDefAccess().getNameSTRINGTerminalRuleCall_2_0_1()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getDecoratorDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"name",
                                      		lv_name_2_2, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4407:3: ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) )
            int alt97=2;
            int LA97_0 = input.LA(1);

            if ( (LA97_0==71) ) {
                alt97=1;
            }
            else if ( (LA97_0==48) ) {
                alt97=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 97, 0, input);

                throw nvae;
            }
            switch (alt97) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4407:4: (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4407:4: (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4407:6: otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) )
                    {
                    otherlv_3=(Token)match(input,71,FOLLOW_71_in_ruleDecoratorDef9976); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getDecoratorDefAccess().getClassKeyword_3_0_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4411:1: ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4412:1: ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4412:1: ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4413:1: (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4413:1: (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING )
                    int alt96=2;
                    int LA96_0 = input.LA(1);

                    if ( (LA96_0==RULE_ID) ) {
                        alt96=1;
                    }
                    else if ( (LA96_0==RULE_STRING) ) {
                        alt96=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 96, 0, input);

                        throw nvae;
                    }
                    switch (alt96) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4414:3: lv_clazz_4_1= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getDecoratorDefAccess().getClazzQualifiedNameParserRuleCall_3_0_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleQualifiedName_in_ruleDecoratorDef9999);
                            lv_clazz_4_1=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getDecoratorDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_4_1, 
                                      		"QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4429:8: lv_clazz_4_2= RULE_STRING
                            {
                            lv_clazz_4_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDecoratorDef10014); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_clazz_4_2, grammarAccess.getDecoratorDefAccess().getClazzSTRINGTerminalRuleCall_3_0_1_0_1()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getDecoratorDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_4_2, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4448:6: (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4448:6: (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4448:8: otherlv_5= 'extends' ( ( ruleQualifiedName ) )
                    {
                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleDecoratorDef10042); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getDecoratorDefAccess().getExtendsKeyword_3_1_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4452:1: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4453:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4453:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4454:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getDecoratorDefRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getDecoratorDefAccess().getSuperElementDecoratorDefCrossReference_3_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleDecoratorDef10065);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4467:4: (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )?
            int alt99=2;
            int LA99_0 = input.LA(1);

            if ( (LA99_0==21) ) {
                alt99=1;
            }
            switch (alt99) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4467:6: otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' )
                    {
                    otherlv_7=(Token)match(input,21,FOLLOW_21_in_ruleDecoratorDef10080); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getDecoratorDefAccess().getColonKeyword_4_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4471:1: ( (lv_tags_8_0= ruleTagDef ) )*
                    loop98:
                    do {
                        int alt98=2;
                        int LA98_0 = input.LA(1);

                        if ( ((LA98_0>=RULE_STRING && LA98_0<=RULE_ID)||(LA98_0>=39 && LA98_0<=40)) ) {
                            alt98=1;
                        }


                        switch (alt98) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4472:1: (lv_tags_8_0= ruleTagDef )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4472:1: (lv_tags_8_0= ruleTagDef )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4473:3: lv_tags_8_0= ruleTagDef
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getDecoratorDefAccess().getTagsTagDefParserRuleCall_4_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleTagDef_in_ruleDecoratorDef10101);
                    	    lv_tags_8_0=ruleTagDef();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getDecoratorDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"tags",
                    	              		lv_tags_8_0, 
                    	              		"TagDef");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop98;
                        }
                    } while (true);

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4489:3: ( ( 'end' )=>otherlv_9= 'end' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4489:4: ( 'end' )=>otherlv_9= 'end'
                    {
                    otherlv_9=(Token)match(input,29,FOLLOW_29_in_ruleDecoratorDef10122); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_9, grammarAccess.getDecoratorDefAccess().getEndKeyword_4_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDecoratorDef"


    // $ANTLR start "entryRuleDecoratorLocatorDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4502:1: entryRuleDecoratorLocatorDef returns [EObject current=null] : iv_ruleDecoratorLocatorDef= ruleDecoratorLocatorDef EOF ;
    public final EObject entryRuleDecoratorLocatorDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDecoratorLocatorDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4503:2: (iv_ruleDecoratorLocatorDef= ruleDecoratorLocatorDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4504:2: iv_ruleDecoratorLocatorDef= ruleDecoratorLocatorDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDecoratorLocatorDefRule()); 
            }
            pushFollow(FOLLOW_ruleDecoratorLocatorDef_in_entryRuleDecoratorLocatorDef10161);
            iv_ruleDecoratorLocatorDef=ruleDecoratorLocatorDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDecoratorLocatorDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDecoratorLocatorDef10171); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDecoratorLocatorDef"


    // $ANTLR start "ruleDecoratorLocatorDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4511:1: ruleDecoratorLocatorDef returns [EObject current=null] : ( () otherlv_1= 'locator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )? ) ;
    public final EObject ruleDecoratorLocatorDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_2=null;
        Token otherlv_3=null;
        Token lv_clazz_4_2=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_name_2_1 = null;

        AntlrDatatypeRuleToken lv_clazz_4_1 = null;

        EObject lv_tags_8_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4514:28: ( ( () otherlv_1= 'locator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4515:1: ( () otherlv_1= 'locator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4515:1: ( () otherlv_1= 'locator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4515:2: () otherlv_1= 'locator' ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4515:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4516:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getDecoratorLocatorDefAccess().getDecoratorLocatorDefAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,72,FOLLOW_72_in_ruleDecoratorLocatorDef10217); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getDecoratorLocatorDefAccess().getLocatorKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4525:1: ( ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) ) )?
            int alt101=2;
            int LA101_0 = input.LA(1);

            if ( (LA101_0==RULE_ID) && (synpred12_InternalUnicornLanguageDefinition())) {
                alt101=1;
            }
            else if ( (LA101_0==RULE_STRING) && (synpred12_InternalUnicornLanguageDefinition())) {
                alt101=1;
            }
            switch (alt101) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4525:2: ( ( ( ruleQualifiedName | RULE_STRING ) ) )=> ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4535:1: ( (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4536:1: (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4536:1: (lv_name_2_1= ruleQualifiedName | lv_name_2_2= RULE_STRING )
                    int alt100=2;
                    int LA100_0 = input.LA(1);

                    if ( (LA100_0==RULE_ID) ) {
                        alt100=1;
                    }
                    else if ( (LA100_0==RULE_STRING) ) {
                        alt100=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 100, 0, input);

                        throw nvae;
                    }
                    switch (alt100) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4537:3: lv_name_2_1= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getDecoratorLocatorDefAccess().getNameQualifiedNameParserRuleCall_2_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleQualifiedName_in_ruleDecoratorLocatorDef10265);
                            lv_name_2_1=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getDecoratorLocatorDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"name",
                                      		lv_name_2_1, 
                                      		"QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4552:8: lv_name_2_2= RULE_STRING
                            {
                            lv_name_2_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDecoratorLocatorDef10280); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_name_2_2, grammarAccess.getDecoratorLocatorDefAccess().getNameSTRINGTerminalRuleCall_2_0_1()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getDecoratorLocatorDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"name",
                                      		lv_name_2_2, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4570:3: ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) ) )
            int alt103=2;
            int LA103_0 = input.LA(1);

            if ( (LA103_0==71) ) {
                alt103=1;
            }
            else if ( (LA103_0==48) ) {
                alt103=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 103, 0, input);

                throw nvae;
            }
            switch (alt103) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4570:4: (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4570:4: (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4570:6: otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) )
                    {
                    otherlv_3=(Token)match(input,71,FOLLOW_71_in_ruleDecoratorLocatorDef10303); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getDecoratorLocatorDefAccess().getClassKeyword_3_0_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4574:1: ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4575:1: ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4575:1: ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4576:1: (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4576:1: (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING )
                    int alt102=2;
                    int LA102_0 = input.LA(1);

                    if ( (LA102_0==RULE_ID) ) {
                        alt102=1;
                    }
                    else if ( (LA102_0==RULE_STRING) ) {
                        alt102=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 102, 0, input);

                        throw nvae;
                    }
                    switch (alt102) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4577:3: lv_clazz_4_1= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getDecoratorLocatorDefAccess().getClazzQualifiedNameParserRuleCall_3_0_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleQualifiedName_in_ruleDecoratorLocatorDef10326);
                            lv_clazz_4_1=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getDecoratorLocatorDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_4_1, 
                                      		"QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4592:8: lv_clazz_4_2= RULE_STRING
                            {
                            lv_clazz_4_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDecoratorLocatorDef10341); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_clazz_4_2, grammarAccess.getDecoratorLocatorDefAccess().getClazzSTRINGTerminalRuleCall_3_0_1_0_1()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getDecoratorLocatorDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_4_2, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4611:6: (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4611:6: (otherlv_5= 'extends' ( ( ruleQualifiedName ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4611:8: otherlv_5= 'extends' ( ( ruleQualifiedName ) )
                    {
                    otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleDecoratorLocatorDef10369); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getDecoratorLocatorDefAccess().getExtendsKeyword_3_1_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4615:1: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4616:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4616:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4617:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getDecoratorLocatorDefRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getDecoratorLocatorDefAccess().getSuperElementDecoratorLocatorDefCrossReference_3_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleDecoratorLocatorDef10392);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4630:4: (otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' ) )?
            int alt105=2;
            int LA105_0 = input.LA(1);

            if ( (LA105_0==21) ) {
                alt105=1;
            }
            switch (alt105) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4630:6: otherlv_7= ':' ( (lv_tags_8_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_9= 'end' )
                    {
                    otherlv_7=(Token)match(input,21,FOLLOW_21_in_ruleDecoratorLocatorDef10407); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getDecoratorLocatorDefAccess().getColonKeyword_4_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4634:1: ( (lv_tags_8_0= ruleTagDef ) )*
                    loop104:
                    do {
                        int alt104=2;
                        int LA104_0 = input.LA(1);

                        if ( ((LA104_0>=RULE_STRING && LA104_0<=RULE_ID)||(LA104_0>=39 && LA104_0<=40)) ) {
                            alt104=1;
                        }


                        switch (alt104) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4635:1: (lv_tags_8_0= ruleTagDef )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4635:1: (lv_tags_8_0= ruleTagDef )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4636:3: lv_tags_8_0= ruleTagDef
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getDecoratorLocatorDefAccess().getTagsTagDefParserRuleCall_4_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleTagDef_in_ruleDecoratorLocatorDef10428);
                    	    lv_tags_8_0=ruleTagDef();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getDecoratorLocatorDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"tags",
                    	              		lv_tags_8_0, 
                    	              		"TagDef");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop104;
                        }
                    } while (true);

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4652:3: ( ( 'end' )=>otherlv_9= 'end' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4652:4: ( 'end' )=>otherlv_9= 'end'
                    {
                    otherlv_9=(Token)match(input,29,FOLLOW_29_in_ruleDecoratorLocatorDef10449); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_9, grammarAccess.getDecoratorLocatorDefAccess().getEndKeyword_4_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDecoratorLocatorDef"


    // $ANTLR start "entryRulePolicyDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4665:1: entryRulePolicyDef returns [EObject current=null] : iv_rulePolicyDef= rulePolicyDef EOF ;
    public final EObject entryRulePolicyDef() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePolicyDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4666:2: (iv_rulePolicyDef= rulePolicyDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4667:2: iv_rulePolicyDef= rulePolicyDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPolicyDefRule()); 
            }
            pushFollow(FOLLOW_rulePolicyDef_in_entryRulePolicyDef10488);
            iv_rulePolicyDef=rulePolicyDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePolicyDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePolicyDef10498); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePolicyDef"


    // $ANTLR start "rulePolicyDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4674:1: rulePolicyDef returns [EObject current=null] : ( () ( (lv_layoutPolicy_1_0= 'layout' ) )? otherlv_2= 'policy' ( (lv_name_3_0= ruleQualifiedName ) )? (otherlv_4= '[' ( (lv_policy_5_0= RULE_ID ) ) otherlv_6= ']' )? ( (otherlv_7= 'class' ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) ) ) | (otherlv_9= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_11= ':' ( (lv_tags_12_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_13= 'end' ) )? ) ;
    public final EObject rulePolicyDef() throws RecognitionException {
        EObject current = null;

        Token lv_layoutPolicy_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token lv_policy_5_0=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token lv_clazz_8_2=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        AntlrDatatypeRuleToken lv_name_3_0 = null;

        AntlrDatatypeRuleToken lv_clazz_8_1 = null;

        EObject lv_tags_12_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4677:28: ( ( () ( (lv_layoutPolicy_1_0= 'layout' ) )? otherlv_2= 'policy' ( (lv_name_3_0= ruleQualifiedName ) )? (otherlv_4= '[' ( (lv_policy_5_0= RULE_ID ) ) otherlv_6= ']' )? ( (otherlv_7= 'class' ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) ) ) | (otherlv_9= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_11= ':' ( (lv_tags_12_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_13= 'end' ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4678:1: ( () ( (lv_layoutPolicy_1_0= 'layout' ) )? otherlv_2= 'policy' ( (lv_name_3_0= ruleQualifiedName ) )? (otherlv_4= '[' ( (lv_policy_5_0= RULE_ID ) ) otherlv_6= ']' )? ( (otherlv_7= 'class' ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) ) ) | (otherlv_9= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_11= ':' ( (lv_tags_12_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_13= 'end' ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4678:1: ( () ( (lv_layoutPolicy_1_0= 'layout' ) )? otherlv_2= 'policy' ( (lv_name_3_0= ruleQualifiedName ) )? (otherlv_4= '[' ( (lv_policy_5_0= RULE_ID ) ) otherlv_6= ']' )? ( (otherlv_7= 'class' ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) ) ) | (otherlv_9= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_11= ':' ( (lv_tags_12_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_13= 'end' ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4678:2: () ( (lv_layoutPolicy_1_0= 'layout' ) )? otherlv_2= 'policy' ( (lv_name_3_0= ruleQualifiedName ) )? (otherlv_4= '[' ( (lv_policy_5_0= RULE_ID ) ) otherlv_6= ']' )? ( (otherlv_7= 'class' ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) ) ) | (otherlv_9= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_11= ':' ( (lv_tags_12_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_13= 'end' ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4678:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4679:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getPolicyDefAccess().getPolicyDefAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4684:2: ( (lv_layoutPolicy_1_0= 'layout' ) )?
            int alt106=2;
            int LA106_0 = input.LA(1);

            if ( (LA106_0==73) ) {
                alt106=1;
            }
            switch (alt106) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4685:1: (lv_layoutPolicy_1_0= 'layout' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4685:1: (lv_layoutPolicy_1_0= 'layout' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4686:3: lv_layoutPolicy_1_0= 'layout'
                    {
                    lv_layoutPolicy_1_0=(Token)match(input,73,FOLLOW_73_in_rulePolicyDef10550); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_layoutPolicy_1_0, grammarAccess.getPolicyDefAccess().getLayoutPolicyLayoutKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPolicyDefRule());
                      	        }
                             		setWithLastConsumed(current, "layoutPolicy", true, "layout");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,74,FOLLOW_74_in_rulePolicyDef10576); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getPolicyDefAccess().getPolicyKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4703:1: ( (lv_name_3_0= ruleQualifiedName ) )?
            int alt107=2;
            int LA107_0 = input.LA(1);

            if ( (LA107_0==RULE_ID) ) {
                alt107=1;
            }
            switch (alt107) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4704:1: (lv_name_3_0= ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4704:1: (lv_name_3_0= ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4705:3: lv_name_3_0= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPolicyDefAccess().getNameQualifiedNameParserRuleCall_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_rulePolicyDef10597);
                    lv_name_3_0=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPolicyDefRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_3_0, 
                              		"QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4721:3: (otherlv_4= '[' ( (lv_policy_5_0= RULE_ID ) ) otherlv_6= ']' )?
            int alt108=2;
            int LA108_0 = input.LA(1);

            if ( (LA108_0==36) ) {
                alt108=1;
            }
            switch (alt108) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4721:5: otherlv_4= '[' ( (lv_policy_5_0= RULE_ID ) ) otherlv_6= ']'
                    {
                    otherlv_4=(Token)match(input,36,FOLLOW_36_in_rulePolicyDef10611); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getPolicyDefAccess().getLeftSquareBracketKeyword_4_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4725:1: ( (lv_policy_5_0= RULE_ID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4726:1: (lv_policy_5_0= RULE_ID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4726:1: (lv_policy_5_0= RULE_ID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4727:3: lv_policy_5_0= RULE_ID
                    {
                    lv_policy_5_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePolicyDef10628); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_policy_5_0, grammarAccess.getPolicyDefAccess().getPolicyIDTerminalRuleCall_4_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPolicyDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"policy",
                              		lv_policy_5_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    otherlv_6=(Token)match(input,38,FOLLOW_38_in_rulePolicyDef10645); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getPolicyDefAccess().getRightSquareBracketKeyword_4_2());
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4747:3: ( (otherlv_7= 'class' ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) ) ) | (otherlv_9= 'extends' ( ( ruleQualifiedName ) ) ) )
            int alt110=2;
            int LA110_0 = input.LA(1);

            if ( (LA110_0==71) ) {
                alt110=1;
            }
            else if ( (LA110_0==48) ) {
                alt110=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 110, 0, input);

                throw nvae;
            }
            switch (alt110) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4747:4: (otherlv_7= 'class' ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4747:4: (otherlv_7= 'class' ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4747:6: otherlv_7= 'class' ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) )
                    {
                    otherlv_7=(Token)match(input,71,FOLLOW_71_in_rulePolicyDef10661); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getPolicyDefAccess().getClassKeyword_5_0_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4751:1: ( ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4752:1: ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4752:1: ( (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4753:1: (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4753:1: (lv_clazz_8_1= ruleQualifiedName | lv_clazz_8_2= RULE_STRING )
                    int alt109=2;
                    int LA109_0 = input.LA(1);

                    if ( (LA109_0==RULE_ID) ) {
                        alt109=1;
                    }
                    else if ( (LA109_0==RULE_STRING) ) {
                        alt109=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 109, 0, input);

                        throw nvae;
                    }
                    switch (alt109) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4754:3: lv_clazz_8_1= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getPolicyDefAccess().getClazzQualifiedNameParserRuleCall_5_0_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleQualifiedName_in_rulePolicyDef10684);
                            lv_clazz_8_1=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getPolicyDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_8_1, 
                                      		"QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4769:8: lv_clazz_8_2= RULE_STRING
                            {
                            lv_clazz_8_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePolicyDef10699); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_clazz_8_2, grammarAccess.getPolicyDefAccess().getClazzSTRINGTerminalRuleCall_5_0_1_0_1()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getPolicyDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_8_2, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4788:6: (otherlv_9= 'extends' ( ( ruleQualifiedName ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4788:6: (otherlv_9= 'extends' ( ( ruleQualifiedName ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4788:8: otherlv_9= 'extends' ( ( ruleQualifiedName ) )
                    {
                    otherlv_9=(Token)match(input,48,FOLLOW_48_in_rulePolicyDef10727); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_9, grammarAccess.getPolicyDefAccess().getExtendsKeyword_5_1_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4792:1: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4793:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4793:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4794:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getPolicyDefRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPolicyDefAccess().getSuperElementPolicyDefCrossReference_5_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_rulePolicyDef10750);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4807:4: (otherlv_11= ':' ( (lv_tags_12_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_13= 'end' ) )?
            int alt112=2;
            int LA112_0 = input.LA(1);

            if ( (LA112_0==21) ) {
                alt112=1;
            }
            switch (alt112) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4807:6: otherlv_11= ':' ( (lv_tags_12_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_13= 'end' )
                    {
                    otherlv_11=(Token)match(input,21,FOLLOW_21_in_rulePolicyDef10765); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_11, grammarAccess.getPolicyDefAccess().getColonKeyword_6_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4811:1: ( (lv_tags_12_0= ruleTagDef ) )*
                    loop111:
                    do {
                        int alt111=2;
                        int LA111_0 = input.LA(1);

                        if ( ((LA111_0>=RULE_STRING && LA111_0<=RULE_ID)||(LA111_0>=39 && LA111_0<=40)) ) {
                            alt111=1;
                        }


                        switch (alt111) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4812:1: (lv_tags_12_0= ruleTagDef )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4812:1: (lv_tags_12_0= ruleTagDef )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4813:3: lv_tags_12_0= ruleTagDef
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getPolicyDefAccess().getTagsTagDefParserRuleCall_6_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleTagDef_in_rulePolicyDef10786);
                    	    lv_tags_12_0=ruleTagDef();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getPolicyDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"tags",
                    	              		lv_tags_12_0, 
                    	              		"TagDef");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop111;
                        }
                    } while (true);

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4829:3: ( ( 'end' )=>otherlv_13= 'end' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4829:4: ( 'end' )=>otherlv_13= 'end'
                    {
                    otherlv_13=(Token)match(input,29,FOLLOW_29_in_rulePolicyDef10807); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_13, grammarAccess.getPolicyDefAccess().getEndKeyword_6_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePolicyDef"


    // $ANTLR start "entryRuleSubViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4842:1: entryRuleSubViewDef returns [EObject current=null] : iv_ruleSubViewDef= ruleSubViewDef EOF ;
    public final EObject entryRuleSubViewDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubViewDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4843:2: (iv_ruleSubViewDef= ruleSubViewDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4844:2: iv_ruleSubViewDef= ruleSubViewDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSubViewDefRule()); 
            }
            pushFollow(FOLLOW_ruleSubViewDef_in_entryRuleSubViewDef10846);
            iv_ruleSubViewDef=ruleSubViewDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSubViewDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSubViewDef10856); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSubViewDef"


    // $ANTLR start "ruleSubViewDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4851:1: ruleSubViewDef returns [EObject current=null] : ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '=' ( (lv_view_2_0= ruleXViewExpression ) ) ) ;
    public final EObject ruleSubViewDef() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_2=null;
        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_name_0_1 = null;

        EObject lv_view_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4854:28: ( ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '=' ( (lv_view_2_0= ruleXViewExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4855:1: ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '=' ( (lv_view_2_0= ruleXViewExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4855:1: ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '=' ( (lv_view_2_0= ruleXViewExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4855:2: ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) otherlv_1= '=' ( (lv_view_2_0= ruleXViewExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4855:2: ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4856:1: ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4856:1: ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4857:1: (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4857:1: (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING )
            int alt113=2;
            int LA113_0 = input.LA(1);

            if ( (LA113_0==RULE_ID) ) {
                alt113=1;
            }
            else if ( (LA113_0==RULE_STRING) ) {
                alt113=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 113, 0, input);

                throw nvae;
            }
            switch (alt113) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4858:3: lv_name_0_1= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSubViewDefAccess().getNameQualifiedNameParserRuleCall_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleSubViewDef10904);
                    lv_name_0_1=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSubViewDefRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_0_1, 
                              		"QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4873:8: lv_name_0_2= RULE_STRING
                    {
                    lv_name_0_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleSubViewDef10919); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_0_2, grammarAccess.getSubViewDefAccess().getNameSTRINGTerminalRuleCall_0_0_1()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSubViewDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_0_2, 
                              		"STRING");
                      	    
                    }

                    }
                    break;

            }


            }


            }

            otherlv_1=(Token)match(input,17,FOLLOW_17_in_ruleSubViewDef10939); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSubViewDefAccess().getEqualsSignKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4895:1: ( (lv_view_2_0= ruleXViewExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4896:1: (lv_view_2_0= ruleXViewExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4896:1: (lv_view_2_0= ruleXViewExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4897:3: lv_view_2_0= ruleXViewExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSubViewDefAccess().getViewXViewExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXViewExpression_in_ruleSubViewDef10960);
            lv_view_2_0=ruleXViewExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSubViewDefRule());
              	        }
                     		set(
                     			current, 
                     			"view",
                      		lv_view_2_0, 
                      		"XViewExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSubViewDef"


    // $ANTLR start "entryRuleFigureDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4921:1: entryRuleFigureDef returns [EObject current=null] : iv_ruleFigureDef= ruleFigureDef EOF ;
    public final EObject entryRuleFigureDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFigureDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4922:2: (iv_ruleFigureDef= ruleFigureDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4923:2: iv_ruleFigureDef= ruleFigureDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFigureDefRule()); 
            }
            pushFollow(FOLLOW_ruleFigureDef_in_entryRuleFigureDef10996);
            iv_ruleFigureDef=ruleFigureDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFigureDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleFigureDef11006); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFigureDef"


    // $ANTLR start "ruleFigureDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4930:1: ruleFigureDef returns [EObject current=null] : ( () ( ( 'figure' )=>otherlv_1= 'figure' ) ( (lv_name_2_0= RULE_ID ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | ( ( (lv_inherited_5_0= 'extends' ) ) ( ( ruleQualifiedName ) ) ) )? (otherlv_7= ':' (otherlv_8= 'add' ( (lv_children_9_0= ruleSubFigure ) ) )* ( (lv_tags_10_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_11= 'end' ) )? ) ;
    public final EObject ruleFigureDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_clazz_4_2=null;
        Token lv_inherited_5_0=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_11=null;
        AntlrDatatypeRuleToken lv_clazz_4_1 = null;

        EObject lv_children_9_0 = null;

        EObject lv_tags_10_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4933:28: ( ( () ( ( 'figure' )=>otherlv_1= 'figure' ) ( (lv_name_2_0= RULE_ID ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | ( ( (lv_inherited_5_0= 'extends' ) ) ( ( ruleQualifiedName ) ) ) )? (otherlv_7= ':' (otherlv_8= 'add' ( (lv_children_9_0= ruleSubFigure ) ) )* ( (lv_tags_10_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_11= 'end' ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4934:1: ( () ( ( 'figure' )=>otherlv_1= 'figure' ) ( (lv_name_2_0= RULE_ID ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | ( ( (lv_inherited_5_0= 'extends' ) ) ( ( ruleQualifiedName ) ) ) )? (otherlv_7= ':' (otherlv_8= 'add' ( (lv_children_9_0= ruleSubFigure ) ) )* ( (lv_tags_10_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_11= 'end' ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4934:1: ( () ( ( 'figure' )=>otherlv_1= 'figure' ) ( (lv_name_2_0= RULE_ID ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | ( ( (lv_inherited_5_0= 'extends' ) ) ( ( ruleQualifiedName ) ) ) )? (otherlv_7= ':' (otherlv_8= 'add' ( (lv_children_9_0= ruleSubFigure ) ) )* ( (lv_tags_10_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_11= 'end' ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4934:2: () ( ( 'figure' )=>otherlv_1= 'figure' ) ( (lv_name_2_0= RULE_ID ) )? ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | ( ( (lv_inherited_5_0= 'extends' ) ) ( ( ruleQualifiedName ) ) ) )? (otherlv_7= ':' (otherlv_8= 'add' ( (lv_children_9_0= ruleSubFigure ) ) )* ( (lv_tags_10_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_11= 'end' ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4934:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4935:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getFigureDefAccess().getFigureDefAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4940:2: ( ( 'figure' )=>otherlv_1= 'figure' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4940:3: ( 'figure' )=>otherlv_1= 'figure'
            {
            otherlv_1=(Token)match(input,49,FOLLOW_49_in_ruleFigureDef11060); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getFigureDefAccess().getFigureKeyword_1());
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4945:2: ( (lv_name_2_0= RULE_ID ) )?
            int alt114=2;
            int LA114_0 = input.LA(1);

            if ( (LA114_0==RULE_ID) ) {
                int LA114_1 = input.LA(2);

                if ( (LA114_1==EOF||(LA114_1>=RULE_STRING && LA114_1<=RULE_ID)||LA114_1==12||LA114_1==14||LA114_1==21||(LA114_1>=24 && LA114_1<=25)||(LA114_1>=28 && LA114_1<=35)||(LA114_1>=39 && LA114_1<=40)||(LA114_1>=47 && LA114_1<=53)||LA114_1==55||(LA114_1>=60 && LA114_1<=61)||(LA114_1>=66 && LA114_1<=67)||(LA114_1>=69 && LA114_1<=74)||(LA114_1>=115 && LA114_1<=116)) ) {
                    alt114=1;
                }
            }
            switch (alt114) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4946:1: (lv_name_2_0= RULE_ID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4946:1: (lv_name_2_0= RULE_ID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4947:3: lv_name_2_0= RULE_ID
                    {
                    lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFigureDef11078); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_2_0, grammarAccess.getFigureDefAccess().getNameIDTerminalRuleCall_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getFigureDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_2_0, 
                              		"ID");
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4963:3: ( (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) ) | ( ( (lv_inherited_5_0= 'extends' ) ) ( ( ruleQualifiedName ) ) ) )?
            int alt116=3;
            int LA116_0 = input.LA(1);

            if ( (LA116_0==71) ) {
                alt116=1;
            }
            else if ( (LA116_0==48) ) {
                alt116=2;
            }
            switch (alt116) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4963:4: (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4963:4: (otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4963:6: otherlv_3= 'class' ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) )
                    {
                    otherlv_3=(Token)match(input,71,FOLLOW_71_in_ruleFigureDef11098); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getFigureDefAccess().getClassKeyword_3_0_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4967:1: ( ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4968:1: ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4968:1: ( (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4969:1: (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4969:1: (lv_clazz_4_1= ruleQualifiedName | lv_clazz_4_2= RULE_STRING )
                    int alt115=2;
                    int LA115_0 = input.LA(1);

                    if ( (LA115_0==RULE_ID) ) {
                        alt115=1;
                    }
                    else if ( (LA115_0==RULE_STRING) ) {
                        alt115=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 115, 0, input);

                        throw nvae;
                    }
                    switch (alt115) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4970:3: lv_clazz_4_1= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getFigureDefAccess().getClazzQualifiedNameParserRuleCall_3_0_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleQualifiedName_in_ruleFigureDef11121);
                            lv_clazz_4_1=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getFigureDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_4_1, 
                                      		"QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4985:8: lv_clazz_4_2= RULE_STRING
                            {
                            lv_clazz_4_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFigureDef11136); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_clazz_4_2, grammarAccess.getFigureDefAccess().getClazzSTRINGTerminalRuleCall_3_0_1_0_1()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getFigureDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_4_2, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5004:6: ( ( (lv_inherited_5_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5004:6: ( ( (lv_inherited_5_0= 'extends' ) ) ( ( ruleQualifiedName ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5004:7: ( (lv_inherited_5_0= 'extends' ) ) ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5004:7: ( (lv_inherited_5_0= 'extends' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5005:1: (lv_inherited_5_0= 'extends' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5005:1: (lv_inherited_5_0= 'extends' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5006:3: lv_inherited_5_0= 'extends'
                    {
                    lv_inherited_5_0=(Token)match(input,48,FOLLOW_48_in_ruleFigureDef11170); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_inherited_5_0, grammarAccess.getFigureDefAccess().getInheritedExtendsKeyword_3_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getFigureDefRule());
                      	        }
                             		setWithLastConsumed(current, "inherited", true, "extends");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5019:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5020:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5020:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5021:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getFigureDefRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getFigureDefAccess().getSuperElementFigureDefCrossReference_3_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleFigureDef11206);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5034:5: (otherlv_7= ':' (otherlv_8= 'add' ( (lv_children_9_0= ruleSubFigure ) ) )* ( (lv_tags_10_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_11= 'end' ) )?
            int alt119=2;
            int LA119_0 = input.LA(1);

            if ( (LA119_0==21) ) {
                alt119=1;
            }
            switch (alt119) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5034:7: otherlv_7= ':' (otherlv_8= 'add' ( (lv_children_9_0= ruleSubFigure ) ) )* ( (lv_tags_10_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_11= 'end' )
                    {
                    otherlv_7=(Token)match(input,21,FOLLOW_21_in_ruleFigureDef11222); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getFigureDefAccess().getColonKeyword_4_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5038:1: (otherlv_8= 'add' ( (lv_children_9_0= ruleSubFigure ) ) )*
                    loop117:
                    do {
                        int alt117=2;
                        int LA117_0 = input.LA(1);

                        if ( (LA117_0==55) ) {
                            alt117=1;
                        }


                        switch (alt117) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5038:3: otherlv_8= 'add' ( (lv_children_9_0= ruleSubFigure ) )
                    	    {
                    	    otherlv_8=(Token)match(input,55,FOLLOW_55_in_ruleFigureDef11235); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_8, grammarAccess.getFigureDefAccess().getAddKeyword_4_1_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5042:1: ( (lv_children_9_0= ruleSubFigure ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5043:1: (lv_children_9_0= ruleSubFigure )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5043:1: (lv_children_9_0= ruleSubFigure )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5044:3: lv_children_9_0= ruleSubFigure
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getFigureDefAccess().getChildrenSubFigureParserRuleCall_4_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleSubFigure_in_ruleFigureDef11256);
                    	    lv_children_9_0=ruleSubFigure();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getFigureDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"children",
                    	              		lv_children_9_0, 
                    	              		"SubFigure");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop117;
                        }
                    } while (true);

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5060:4: ( (lv_tags_10_0= ruleTagDef ) )*
                    loop118:
                    do {
                        int alt118=2;
                        int LA118_0 = input.LA(1);

                        if ( ((LA118_0>=RULE_STRING && LA118_0<=RULE_ID)||(LA118_0>=39 && LA118_0<=40)) ) {
                            alt118=1;
                        }


                        switch (alt118) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5061:1: (lv_tags_10_0= ruleTagDef )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5061:1: (lv_tags_10_0= ruleTagDef )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5062:3: lv_tags_10_0= ruleTagDef
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getFigureDefAccess().getTagsTagDefParserRuleCall_4_2_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleTagDef_in_ruleFigureDef11279);
                    	    lv_tags_10_0=ruleTagDef();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getFigureDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"tags",
                    	              		lv_tags_10_0, 
                    	              		"TagDef");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop118;
                        }
                    } while (true);

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5078:3: ( ( 'end' )=>otherlv_11= 'end' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5078:4: ( 'end' )=>otherlv_11= 'end'
                    {
                    otherlv_11=(Token)match(input,29,FOLLOW_29_in_ruleFigureDef11300); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_11, grammarAccess.getFigureDefAccess().getEndKeyword_4_3());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFigureDef"


    // $ANTLR start "entryRuleSubFigure"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5091:1: entryRuleSubFigure returns [EObject current=null] : iv_ruleSubFigure= ruleSubFigure EOF ;
    public final EObject entryRuleSubFigure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubFigure = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5092:2: (iv_ruleSubFigure= ruleSubFigure EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5093:2: iv_ruleSubFigure= ruleSubFigure EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSubFigureRule()); 
            }
            pushFollow(FOLLOW_ruleSubFigure_in_entryRuleSubFigure11339);
            iv_ruleSubFigure=ruleSubFigure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSubFigure; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSubFigure11349); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSubFigure"


    // $ANTLR start "ruleSubFigure"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5100:1: ruleSubFigure returns [EObject current=null] : ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_layout_2_0= ruleLayoutParameter ) ) (otherlv_3= ',' ( (lv_layout_4_0= ruleLayoutParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_figure_7_0= ruleXFigureExpression ) ) ) ;
    public final EObject ruleSubFigure() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_2=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_name_0_1 = null;

        EObject lv_layout_2_0 = null;

        EObject lv_layout_4_0 = null;

        EObject lv_figure_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5103:28: ( ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_layout_2_0= ruleLayoutParameter ) ) (otherlv_3= ',' ( (lv_layout_4_0= ruleLayoutParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_figure_7_0= ruleXFigureExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5104:1: ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_layout_2_0= ruleLayoutParameter ) ) (otherlv_3= ',' ( (lv_layout_4_0= ruleLayoutParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_figure_7_0= ruleXFigureExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5104:1: ( ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_layout_2_0= ruleLayoutParameter ) ) (otherlv_3= ',' ( (lv_layout_4_0= ruleLayoutParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_figure_7_0= ruleXFigureExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5104:2: ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) ) (otherlv_1= '[' ( (lv_layout_2_0= ruleLayoutParameter ) ) (otherlv_3= ',' ( (lv_layout_4_0= ruleLayoutParameter ) ) )* otherlv_5= ']' )? otherlv_6= '=' ( (lv_figure_7_0= ruleXFigureExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5104:2: ( ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5105:1: ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5105:1: ( (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5106:1: (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5106:1: (lv_name_0_1= ruleQualifiedName | lv_name_0_2= RULE_STRING )
            int alt120=2;
            int LA120_0 = input.LA(1);

            if ( (LA120_0==RULE_ID) ) {
                alt120=1;
            }
            else if ( (LA120_0==RULE_STRING) ) {
                alt120=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 120, 0, input);

                throw nvae;
            }
            switch (alt120) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5107:3: lv_name_0_1= ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSubFigureAccess().getNameQualifiedNameParserRuleCall_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleSubFigure11397);
                    lv_name_0_1=ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSubFigureRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_0_1, 
                              		"QualifiedName");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5122:8: lv_name_0_2= RULE_STRING
                    {
                    lv_name_0_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleSubFigure11412); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_0_2, grammarAccess.getSubFigureAccess().getNameSTRINGTerminalRuleCall_0_0_1()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSubFigureRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_0_2, 
                              		"STRING");
                      	    
                    }

                    }
                    break;

            }


            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5140:2: (otherlv_1= '[' ( (lv_layout_2_0= ruleLayoutParameter ) ) (otherlv_3= ',' ( (lv_layout_4_0= ruleLayoutParameter ) ) )* otherlv_5= ']' )?
            int alt122=2;
            int LA122_0 = input.LA(1);

            if ( (LA122_0==36) ) {
                alt122=1;
            }
            switch (alt122) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5140:4: otherlv_1= '[' ( (lv_layout_2_0= ruleLayoutParameter ) ) (otherlv_3= ',' ( (lv_layout_4_0= ruleLayoutParameter ) ) )* otherlv_5= ']'
                    {
                    otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleSubFigure11433); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getSubFigureAccess().getLeftSquareBracketKeyword_1_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5144:1: ( (lv_layout_2_0= ruleLayoutParameter ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5145:1: (lv_layout_2_0= ruleLayoutParameter )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5145:1: (lv_layout_2_0= ruleLayoutParameter )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5146:3: lv_layout_2_0= ruleLayoutParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSubFigureAccess().getLayoutLayoutParameterParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleLayoutParameter_in_ruleSubFigure11454);
                    lv_layout_2_0=ruleLayoutParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSubFigureRule());
                      	        }
                             		add(
                             			current, 
                             			"layout",
                              		lv_layout_2_0, 
                              		"LayoutParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5162:2: (otherlv_3= ',' ( (lv_layout_4_0= ruleLayoutParameter ) ) )*
                    loop121:
                    do {
                        int alt121=2;
                        int LA121_0 = input.LA(1);

                        if ( (LA121_0==37) ) {
                            alt121=1;
                        }


                        switch (alt121) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5162:4: otherlv_3= ',' ( (lv_layout_4_0= ruleLayoutParameter ) )
                    	    {
                    	    otherlv_3=(Token)match(input,37,FOLLOW_37_in_ruleSubFigure11467); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getSubFigureAccess().getCommaKeyword_1_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5166:1: ( (lv_layout_4_0= ruleLayoutParameter ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5167:1: (lv_layout_4_0= ruleLayoutParameter )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5167:1: (lv_layout_4_0= ruleLayoutParameter )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5168:3: lv_layout_4_0= ruleLayoutParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getSubFigureAccess().getLayoutLayoutParameterParserRuleCall_1_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleLayoutParameter_in_ruleSubFigure11488);
                    	    lv_layout_4_0=ruleLayoutParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getSubFigureRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"layout",
                    	              		lv_layout_4_0, 
                    	              		"LayoutParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop121;
                        }
                    } while (true);

                    otherlv_5=(Token)match(input,38,FOLLOW_38_in_ruleSubFigure11502); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getSubFigureAccess().getRightSquareBracketKeyword_1_3());
                          
                    }

                    }
                    break;

            }

            otherlv_6=(Token)match(input,17,FOLLOW_17_in_ruleSubFigure11516); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getSubFigureAccess().getEqualsSignKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5192:1: ( (lv_figure_7_0= ruleXFigureExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5193:1: (lv_figure_7_0= ruleXFigureExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5193:1: (lv_figure_7_0= ruleXFigureExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5194:3: lv_figure_7_0= ruleXFigureExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSubFigureAccess().getFigureXFigureExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXFigureExpression_in_ruleSubFigure11537);
            lv_figure_7_0=ruleXFigureExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSubFigureRule());
              	        }
                     		set(
                     			current, 
                     			"figure",
                      		lv_figure_7_0, 
                      		"XFigureExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSubFigure"


    // $ANTLR start "entryRuleToolViewParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5218:1: entryRuleToolViewParameter returns [EObject current=null] : iv_ruleToolViewParameter= ruleToolViewParameter EOF ;
    public final EObject entryRuleToolViewParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleToolViewParameter = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5219:2: (iv_ruleToolViewParameter= ruleToolViewParameter EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5220:2: iv_ruleToolViewParameter= ruleToolViewParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getToolViewParameterRule()); 
            }
            pushFollow(FOLLOW_ruleToolViewParameter_in_entryRuleToolViewParameter11573);
            iv_ruleToolViewParameter=ruleToolViewParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleToolViewParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleToolViewParameter11583); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleToolViewParameter"


    // $ANTLR start "ruleToolViewParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5227:1: ruleToolViewParameter returns [EObject current=null] : ( ( (lv_paramId_0_0= ruleToolViewExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) ;
    public final EObject ruleToolViewParameter() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Enumerator lv_paramId_0_0 = null;

        EObject lv_value_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5230:28: ( ( ( (lv_paramId_0_0= ruleToolViewExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5231:1: ( ( (lv_paramId_0_0= ruleToolViewExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5231:1: ( ( (lv_paramId_0_0= ruleToolViewExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5231:2: ( (lv_paramId_0_0= ruleToolViewExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5231:2: ( (lv_paramId_0_0= ruleToolViewExpNameID ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5232:1: (lv_paramId_0_0= ruleToolViewExpNameID )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5232:1: (lv_paramId_0_0= ruleToolViewExpNameID )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5233:3: lv_paramId_0_0= ruleToolViewExpNameID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getToolViewParameterAccess().getParamIdToolViewExpNameIDEnumRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleToolViewExpNameID_in_ruleToolViewParameter11629);
            lv_paramId_0_0=ruleToolViewExpNameID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getToolViewParameterRule());
              	        }
                     		set(
                     			current, 
                     			"paramId",
                      		lv_paramId_0_0, 
                      		"ToolViewExpNameID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleToolViewParameter11641); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getToolViewParameterAccess().getColonKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5253:1: ( (lv_value_2_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5254:1: (lv_value_2_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5254:1: (lv_value_2_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5255:3: lv_value_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getToolViewParameterAccess().getValueXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleToolViewParameter11662);
            lv_value_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getToolViewParameterRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleToolViewParameter"


    // $ANTLR start "entryRuleTagEntryDefParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5279:1: entryRuleTagEntryDefParameter returns [EObject current=null] : iv_ruleTagEntryDefParameter= ruleTagEntryDefParameter EOF ;
    public final EObject entryRuleTagEntryDefParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTagEntryDefParameter = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5280:2: (iv_ruleTagEntryDefParameter= ruleTagEntryDefParameter EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5281:2: iv_ruleTagEntryDefParameter= ruleTagEntryDefParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTagEntryDefParameterRule()); 
            }
            pushFollow(FOLLOW_ruleTagEntryDefParameter_in_entryRuleTagEntryDefParameter11698);
            iv_ruleTagEntryDefParameter=ruleTagEntryDefParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTagEntryDefParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTagEntryDefParameter11708); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTagEntryDefParameter"


    // $ANTLR start "ruleTagEntryDefParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5288:1: ruleTagEntryDefParameter returns [EObject current=null] : ( ( (lv_paramId_0_0= ruleTagEntryDefExpParameterID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) ;
    public final EObject ruleTagEntryDefParameter() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Enumerator lv_paramId_0_0 = null;

        EObject lv_value_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5291:28: ( ( ( (lv_paramId_0_0= ruleTagEntryDefExpParameterID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5292:1: ( ( (lv_paramId_0_0= ruleTagEntryDefExpParameterID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5292:1: ( ( (lv_paramId_0_0= ruleTagEntryDefExpParameterID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5292:2: ( (lv_paramId_0_0= ruleTagEntryDefExpParameterID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5292:2: ( (lv_paramId_0_0= ruleTagEntryDefExpParameterID ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5293:1: (lv_paramId_0_0= ruleTagEntryDefExpParameterID )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5293:1: (lv_paramId_0_0= ruleTagEntryDefExpParameterID )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5294:3: lv_paramId_0_0= ruleTagEntryDefExpParameterID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTagEntryDefParameterAccess().getParamIdTagEntryDefExpParameterIDEnumRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTagEntryDefExpParameterID_in_ruleTagEntryDefParameter11754);
            lv_paramId_0_0=ruleTagEntryDefExpParameterID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTagEntryDefParameterRule());
              	        }
                     		set(
                     			current, 
                     			"paramId",
                      		lv_paramId_0_0, 
                      		"TagEntryDefExpParameterID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleTagEntryDefParameter11766); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getTagEntryDefParameterAccess().getColonKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5314:1: ( (lv_value_2_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5315:1: (lv_value_2_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5315:1: (lv_value_2_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5316:3: lv_value_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTagEntryDefParameterAccess().getValueXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleTagEntryDefParameter11787);
            lv_value_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTagEntryDefParameterRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTagEntryDefParameter"


    // $ANTLR start "entryRuleLayoutParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5340:1: entryRuleLayoutParameter returns [EObject current=null] : iv_ruleLayoutParameter= ruleLayoutParameter EOF ;
    public final EObject entryRuleLayoutParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLayoutParameter = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5341:2: (iv_ruleLayoutParameter= ruleLayoutParameter EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5342:2: iv_ruleLayoutParameter= ruleLayoutParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLayoutParameterRule()); 
            }
            pushFollow(FOLLOW_ruleLayoutParameter_in_entryRuleLayoutParameter11823);
            iv_ruleLayoutParameter=ruleLayoutParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLayoutParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleLayoutParameter11833); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLayoutParameter"


    // $ANTLR start "ruleLayoutParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5349:1: ruleLayoutParameter returns [EObject current=null] : ( ( ( (lv_paramId_0_0= ruleLayoutExpParameterNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) | ( ( (lv_paramId_3_0= ruleDockParameterNameID ) ) otherlv_4= ':' ( (lv_dockValue_5_0= ruleDockType ) ) ) | ( ( (lv_paramId_6_0= ruleBoundParameterNameID ) ) otherlv_7= ':' ( (lv_boundValue_8_0= ruleXRectangle ) ) ) | ( ( (lv_paramId_9_0= ruleAnchorNameID ) ) otherlv_10= ':' ( (lv_anchorValue_11_0= ruleAnchor ) ) ) ) ;
    public final EObject ruleLayoutParameter() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        Token otherlv_10=null;
        Enumerator lv_paramId_0_0 = null;

        EObject lv_value_2_0 = null;

        Enumerator lv_paramId_3_0 = null;

        Enumerator lv_dockValue_5_0 = null;

        Enumerator lv_paramId_6_0 = null;

        EObject lv_boundValue_8_0 = null;

        Enumerator lv_paramId_9_0 = null;

        EObject lv_anchorValue_11_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5352:28: ( ( ( ( (lv_paramId_0_0= ruleLayoutExpParameterNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) | ( ( (lv_paramId_3_0= ruleDockParameterNameID ) ) otherlv_4= ':' ( (lv_dockValue_5_0= ruleDockType ) ) ) | ( ( (lv_paramId_6_0= ruleBoundParameterNameID ) ) otherlv_7= ':' ( (lv_boundValue_8_0= ruleXRectangle ) ) ) | ( ( (lv_paramId_9_0= ruleAnchorNameID ) ) otherlv_10= ':' ( (lv_anchorValue_11_0= ruleAnchor ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5353:1: ( ( ( (lv_paramId_0_0= ruleLayoutExpParameterNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) | ( ( (lv_paramId_3_0= ruleDockParameterNameID ) ) otherlv_4= ':' ( (lv_dockValue_5_0= ruleDockType ) ) ) | ( ( (lv_paramId_6_0= ruleBoundParameterNameID ) ) otherlv_7= ':' ( (lv_boundValue_8_0= ruleXRectangle ) ) ) | ( ( (lv_paramId_9_0= ruleAnchorNameID ) ) otherlv_10= ':' ( (lv_anchorValue_11_0= ruleAnchor ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5353:1: ( ( ( (lv_paramId_0_0= ruleLayoutExpParameterNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) | ( ( (lv_paramId_3_0= ruleDockParameterNameID ) ) otherlv_4= ':' ( (lv_dockValue_5_0= ruleDockType ) ) ) | ( ( (lv_paramId_6_0= ruleBoundParameterNameID ) ) otherlv_7= ':' ( (lv_boundValue_8_0= ruleXRectangle ) ) ) | ( ( (lv_paramId_9_0= ruleAnchorNameID ) ) otherlv_10= ':' ( (lv_anchorValue_11_0= ruleAnchor ) ) ) )
            int alt123=4;
            switch ( input.LA(1) ) {
            case 139:
                {
                alt123=1;
                }
                break;
            case 141:
                {
                alt123=2;
                }
                break;
            case 144:
            case 145:
            case 146:
            case 147:
                {
                alt123=3;
                }
                break;
            case 142:
                {
                alt123=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 123, 0, input);

                throw nvae;
            }

            switch (alt123) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5353:2: ( ( (lv_paramId_0_0= ruleLayoutExpParameterNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5353:2: ( ( (lv_paramId_0_0= ruleLayoutExpParameterNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5353:3: ( (lv_paramId_0_0= ruleLayoutExpParameterNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5353:3: ( (lv_paramId_0_0= ruleLayoutExpParameterNameID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5354:1: (lv_paramId_0_0= ruleLayoutExpParameterNameID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5354:1: (lv_paramId_0_0= ruleLayoutExpParameterNameID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5355:3: lv_paramId_0_0= ruleLayoutExpParameterNameID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLayoutParameterAccess().getParamIdLayoutExpParameterNameIDEnumRuleCall_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleLayoutExpParameterNameID_in_ruleLayoutParameter11880);
                    lv_paramId_0_0=ruleLayoutExpParameterNameID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLayoutParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"paramId",
                              		lv_paramId_0_0, 
                              		"LayoutExpParameterNameID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleLayoutParameter11892); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getLayoutParameterAccess().getColonKeyword_0_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5375:1: ( (lv_value_2_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5376:1: (lv_value_2_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5376:1: (lv_value_2_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5377:3: lv_value_2_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLayoutParameterAccess().getValueXExpressionParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleLayoutParameter11913);
                    lv_value_2_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLayoutParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_2_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5394:6: ( ( (lv_paramId_3_0= ruleDockParameterNameID ) ) otherlv_4= ':' ( (lv_dockValue_5_0= ruleDockType ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5394:6: ( ( (lv_paramId_3_0= ruleDockParameterNameID ) ) otherlv_4= ':' ( (lv_dockValue_5_0= ruleDockType ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5394:7: ( (lv_paramId_3_0= ruleDockParameterNameID ) ) otherlv_4= ':' ( (lv_dockValue_5_0= ruleDockType ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5394:7: ( (lv_paramId_3_0= ruleDockParameterNameID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5395:1: (lv_paramId_3_0= ruleDockParameterNameID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5395:1: (lv_paramId_3_0= ruleDockParameterNameID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5396:3: lv_paramId_3_0= ruleDockParameterNameID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLayoutParameterAccess().getParamIdDockParameterNameIDEnumRuleCall_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDockParameterNameID_in_ruleLayoutParameter11942);
                    lv_paramId_3_0=ruleDockParameterNameID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLayoutParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"paramId",
                              		lv_paramId_3_0, 
                              		"DockParameterNameID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_4=(Token)match(input,21,FOLLOW_21_in_ruleLayoutParameter11954); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getLayoutParameterAccess().getColonKeyword_1_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5416:1: ( (lv_dockValue_5_0= ruleDockType ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5417:1: (lv_dockValue_5_0= ruleDockType )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5417:1: (lv_dockValue_5_0= ruleDockType )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5418:3: lv_dockValue_5_0= ruleDockType
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLayoutParameterAccess().getDockValueDockTypeEnumRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDockType_in_ruleLayoutParameter11975);
                    lv_dockValue_5_0=ruleDockType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLayoutParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"dockValue",
                              		lv_dockValue_5_0, 
                              		"DockType");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5435:6: ( ( (lv_paramId_6_0= ruleBoundParameterNameID ) ) otherlv_7= ':' ( (lv_boundValue_8_0= ruleXRectangle ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5435:6: ( ( (lv_paramId_6_0= ruleBoundParameterNameID ) ) otherlv_7= ':' ( (lv_boundValue_8_0= ruleXRectangle ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5435:7: ( (lv_paramId_6_0= ruleBoundParameterNameID ) ) otherlv_7= ':' ( (lv_boundValue_8_0= ruleXRectangle ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5435:7: ( (lv_paramId_6_0= ruleBoundParameterNameID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5436:1: (lv_paramId_6_0= ruleBoundParameterNameID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5436:1: (lv_paramId_6_0= ruleBoundParameterNameID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5437:3: lv_paramId_6_0= ruleBoundParameterNameID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLayoutParameterAccess().getParamIdBoundParameterNameIDEnumRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleBoundParameterNameID_in_ruleLayoutParameter12004);
                    lv_paramId_6_0=ruleBoundParameterNameID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLayoutParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"paramId",
                              		lv_paramId_6_0, 
                              		"BoundParameterNameID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_7=(Token)match(input,21,FOLLOW_21_in_ruleLayoutParameter12016); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getLayoutParameterAccess().getColonKeyword_2_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5457:1: ( (lv_boundValue_8_0= ruleXRectangle ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5458:1: (lv_boundValue_8_0= ruleXRectangle )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5458:1: (lv_boundValue_8_0= ruleXRectangle )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5459:3: lv_boundValue_8_0= ruleXRectangle
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLayoutParameterAccess().getBoundValueXRectangleParserRuleCall_2_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXRectangle_in_ruleLayoutParameter12037);
                    lv_boundValue_8_0=ruleXRectangle();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLayoutParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"boundValue",
                              		lv_boundValue_8_0, 
                              		"XRectangle");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5476:6: ( ( (lv_paramId_9_0= ruleAnchorNameID ) ) otherlv_10= ':' ( (lv_anchorValue_11_0= ruleAnchor ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5476:6: ( ( (lv_paramId_9_0= ruleAnchorNameID ) ) otherlv_10= ':' ( (lv_anchorValue_11_0= ruleAnchor ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5476:7: ( (lv_paramId_9_0= ruleAnchorNameID ) ) otherlv_10= ':' ( (lv_anchorValue_11_0= ruleAnchor ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5476:7: ( (lv_paramId_9_0= ruleAnchorNameID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5477:1: (lv_paramId_9_0= ruleAnchorNameID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5477:1: (lv_paramId_9_0= ruleAnchorNameID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5478:3: lv_paramId_9_0= ruleAnchorNameID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLayoutParameterAccess().getParamIdAnchorNameIDEnumRuleCall_3_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleAnchorNameID_in_ruleLayoutParameter12066);
                    lv_paramId_9_0=ruleAnchorNameID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLayoutParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"paramId",
                              		lv_paramId_9_0, 
                              		"AnchorNameID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_10=(Token)match(input,21,FOLLOW_21_in_ruleLayoutParameter12078); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_10, grammarAccess.getLayoutParameterAccess().getColonKeyword_3_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5498:1: ( (lv_anchorValue_11_0= ruleAnchor ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5499:1: (lv_anchorValue_11_0= ruleAnchor )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5499:1: (lv_anchorValue_11_0= ruleAnchor )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5500:3: lv_anchorValue_11_0= ruleAnchor
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLayoutParameterAccess().getAnchorValueAnchorParserRuleCall_3_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleAnchor_in_ruleLayoutParameter12099);
                    lv_anchorValue_11_0=ruleAnchor();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLayoutParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"anchorValue",
                              		lv_anchorValue_11_0, 
                              		"Anchor");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLayoutParameter"


    // $ANTLR start "entryRuleDecoratorParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5524:1: entryRuleDecoratorParameter returns [EObject current=null] : iv_ruleDecoratorParameter= ruleDecoratorParameter EOF ;
    public final EObject entryRuleDecoratorParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDecoratorParameter = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5525:2: (iv_ruleDecoratorParameter= ruleDecoratorParameter EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5526:2: iv_ruleDecoratorParameter= ruleDecoratorParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDecoratorParameterRule()); 
            }
            pushFollow(FOLLOW_ruleDecoratorParameter_in_entryRuleDecoratorParameter12136);
            iv_ruleDecoratorParameter=ruleDecoratorParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDecoratorParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDecoratorParameter12146); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDecoratorParameter"


    // $ANTLR start "ruleDecoratorParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5533:1: ruleDecoratorParameter returns [EObject current=null] : ( ( ( (lv_paramId_0_0= ruleLocationNameID ) ) otherlv_1= ':' ( (lv_locationValue_2_0= ruleDecoratorLocation ) ) ) | ( ( (lv_paramId_3_0= ruleLocatorParameterNameID ) ) otherlv_4= ':' ( (lv_item_5_0= ruleXLocatorExpression ) ) ) ) ;
    public final EObject ruleDecoratorParameter() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_4=null;
        Enumerator lv_paramId_0_0 = null;

        Enumerator lv_locationValue_2_0 = null;

        Enumerator lv_paramId_3_0 = null;

        EObject lv_item_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5536:28: ( ( ( ( (lv_paramId_0_0= ruleLocationNameID ) ) otherlv_1= ':' ( (lv_locationValue_2_0= ruleDecoratorLocation ) ) ) | ( ( (lv_paramId_3_0= ruleLocatorParameterNameID ) ) otherlv_4= ':' ( (lv_item_5_0= ruleXLocatorExpression ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5537:1: ( ( ( (lv_paramId_0_0= ruleLocationNameID ) ) otherlv_1= ':' ( (lv_locationValue_2_0= ruleDecoratorLocation ) ) ) | ( ( (lv_paramId_3_0= ruleLocatorParameterNameID ) ) otherlv_4= ':' ( (lv_item_5_0= ruleXLocatorExpression ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5537:1: ( ( ( (lv_paramId_0_0= ruleLocationNameID ) ) otherlv_1= ':' ( (lv_locationValue_2_0= ruleDecoratorLocation ) ) ) | ( ( (lv_paramId_3_0= ruleLocatorParameterNameID ) ) otherlv_4= ':' ( (lv_item_5_0= ruleXLocatorExpression ) ) ) )
            int alt124=2;
            int LA124_0 = input.LA(1);

            if ( (LA124_0==143) ) {
                alt124=1;
            }
            else if ( (LA124_0==72) ) {
                alt124=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 124, 0, input);

                throw nvae;
            }
            switch (alt124) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5537:2: ( ( (lv_paramId_0_0= ruleLocationNameID ) ) otherlv_1= ':' ( (lv_locationValue_2_0= ruleDecoratorLocation ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5537:2: ( ( (lv_paramId_0_0= ruleLocationNameID ) ) otherlv_1= ':' ( (lv_locationValue_2_0= ruleDecoratorLocation ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5537:3: ( (lv_paramId_0_0= ruleLocationNameID ) ) otherlv_1= ':' ( (lv_locationValue_2_0= ruleDecoratorLocation ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5537:3: ( (lv_paramId_0_0= ruleLocationNameID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5538:1: (lv_paramId_0_0= ruleLocationNameID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5538:1: (lv_paramId_0_0= ruleLocationNameID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5539:3: lv_paramId_0_0= ruleLocationNameID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getDecoratorParameterAccess().getParamIdLocationNameIDEnumRuleCall_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleLocationNameID_in_ruleDecoratorParameter12193);
                    lv_paramId_0_0=ruleLocationNameID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getDecoratorParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"paramId",
                              		lv_paramId_0_0, 
                              		"LocationNameID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleDecoratorParameter12205); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getDecoratorParameterAccess().getColonKeyword_0_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5559:1: ( (lv_locationValue_2_0= ruleDecoratorLocation ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5560:1: (lv_locationValue_2_0= ruleDecoratorLocation )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5560:1: (lv_locationValue_2_0= ruleDecoratorLocation )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5561:3: lv_locationValue_2_0= ruleDecoratorLocation
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getDecoratorParameterAccess().getLocationValueDecoratorLocationEnumRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDecoratorLocation_in_ruleDecoratorParameter12226);
                    lv_locationValue_2_0=ruleDecoratorLocation();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getDecoratorParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"locationValue",
                              		lv_locationValue_2_0, 
                              		"DecoratorLocation");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5578:6: ( ( (lv_paramId_3_0= ruleLocatorParameterNameID ) ) otherlv_4= ':' ( (lv_item_5_0= ruleXLocatorExpression ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5578:6: ( ( (lv_paramId_3_0= ruleLocatorParameterNameID ) ) otherlv_4= ':' ( (lv_item_5_0= ruleXLocatorExpression ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5578:7: ( (lv_paramId_3_0= ruleLocatorParameterNameID ) ) otherlv_4= ':' ( (lv_item_5_0= ruleXLocatorExpression ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5578:7: ( (lv_paramId_3_0= ruleLocatorParameterNameID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5579:1: (lv_paramId_3_0= ruleLocatorParameterNameID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5579:1: (lv_paramId_3_0= ruleLocatorParameterNameID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5580:3: lv_paramId_3_0= ruleLocatorParameterNameID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getDecoratorParameterAccess().getParamIdLocatorParameterNameIDEnumRuleCall_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleLocatorParameterNameID_in_ruleDecoratorParameter12255);
                    lv_paramId_3_0=ruleLocatorParameterNameID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getDecoratorParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"paramId",
                              		lv_paramId_3_0, 
                              		"LocatorParameterNameID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_4=(Token)match(input,21,FOLLOW_21_in_ruleDecoratorParameter12267); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getDecoratorParameterAccess().getColonKeyword_1_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5600:1: ( (lv_item_5_0= ruleXLocatorExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5601:1: (lv_item_5_0= ruleXLocatorExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5601:1: (lv_item_5_0= ruleXLocatorExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5602:3: lv_item_5_0= ruleXLocatorExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getDecoratorParameterAccess().getItemXLocatorExpressionParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXLocatorExpression_in_ruleDecoratorParameter12288);
                    lv_item_5_0=ruleXLocatorExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getDecoratorParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"item",
                              		lv_item_5_0, 
                              		"XLocatorExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDecoratorParameter"


    // $ANTLR start "entryRuleElementFigureParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5626:1: entryRuleElementFigureParameter returns [EObject current=null] : iv_ruleElementFigureParameter= ruleElementFigureParameter EOF ;
    public final EObject entryRuleElementFigureParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElementFigureParameter = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5627:2: (iv_ruleElementFigureParameter= ruleElementFigureParameter EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5628:2: iv_ruleElementFigureParameter= ruleElementFigureParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getElementFigureParameterRule()); 
            }
            pushFollow(FOLLOW_ruleElementFigureParameter_in_entryRuleElementFigureParameter12325);
            iv_ruleElementFigureParameter=ruleElementFigureParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleElementFigureParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleElementFigureParameter12335); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElementFigureParameter"


    // $ANTLR start "ruleElementFigureParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5635:1: ruleElementFigureParameter returns [EObject current=null] : ( ( ( (lv_paramId_0_0= ruleElementFigureExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) | ( ( (lv_paramId_3_0= ruleBoundParameterNameID ) ) otherlv_4= ':' ( (lv_boundValue_5_0= ruleXRectangle ) ) ) ) ;
    public final EObject ruleElementFigureParameter() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_4=null;
        Enumerator lv_paramId_0_0 = null;

        EObject lv_value_2_0 = null;

        Enumerator lv_paramId_3_0 = null;

        EObject lv_boundValue_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5638:28: ( ( ( ( (lv_paramId_0_0= ruleElementFigureExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) | ( ( (lv_paramId_3_0= ruleBoundParameterNameID ) ) otherlv_4= ':' ( (lv_boundValue_5_0= ruleXRectangle ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5639:1: ( ( ( (lv_paramId_0_0= ruleElementFigureExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) | ( ( (lv_paramId_3_0= ruleBoundParameterNameID ) ) otherlv_4= ':' ( (lv_boundValue_5_0= ruleXRectangle ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5639:1: ( ( ( (lv_paramId_0_0= ruleElementFigureExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) ) | ( ( (lv_paramId_3_0= ruleBoundParameterNameID ) ) otherlv_4= ':' ( (lv_boundValue_5_0= ruleXRectangle ) ) ) )
            int alt125=2;
            int LA125_0 = input.LA(1);

            if ( ((LA125_0>=139 && LA125_0<=140)) ) {
                alt125=1;
            }
            else if ( ((LA125_0>=144 && LA125_0<=147)) ) {
                alt125=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 125, 0, input);

                throw nvae;
            }
            switch (alt125) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5639:2: ( ( (lv_paramId_0_0= ruleElementFigureExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5639:2: ( ( (lv_paramId_0_0= ruleElementFigureExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5639:3: ( (lv_paramId_0_0= ruleElementFigureExpNameID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleXExpression ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5639:3: ( (lv_paramId_0_0= ruleElementFigureExpNameID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5640:1: (lv_paramId_0_0= ruleElementFigureExpNameID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5640:1: (lv_paramId_0_0= ruleElementFigureExpNameID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5641:3: lv_paramId_0_0= ruleElementFigureExpNameID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getElementFigureParameterAccess().getParamIdElementFigureExpNameIDEnumRuleCall_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleElementFigureExpNameID_in_ruleElementFigureParameter12382);
                    lv_paramId_0_0=ruleElementFigureExpNameID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getElementFigureParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"paramId",
                              		lv_paramId_0_0, 
                              		"ElementFigureExpNameID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleElementFigureParameter12394); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getElementFigureParameterAccess().getColonKeyword_0_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5661:1: ( (lv_value_2_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5662:1: (lv_value_2_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5662:1: (lv_value_2_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5663:3: lv_value_2_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getElementFigureParameterAccess().getValueXExpressionParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleElementFigureParameter12415);
                    lv_value_2_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getElementFigureParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_2_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5680:6: ( ( (lv_paramId_3_0= ruleBoundParameterNameID ) ) otherlv_4= ':' ( (lv_boundValue_5_0= ruleXRectangle ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5680:6: ( ( (lv_paramId_3_0= ruleBoundParameterNameID ) ) otherlv_4= ':' ( (lv_boundValue_5_0= ruleXRectangle ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5680:7: ( (lv_paramId_3_0= ruleBoundParameterNameID ) ) otherlv_4= ':' ( (lv_boundValue_5_0= ruleXRectangle ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5680:7: ( (lv_paramId_3_0= ruleBoundParameterNameID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5681:1: (lv_paramId_3_0= ruleBoundParameterNameID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5681:1: (lv_paramId_3_0= ruleBoundParameterNameID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5682:3: lv_paramId_3_0= ruleBoundParameterNameID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getElementFigureParameterAccess().getParamIdBoundParameterNameIDEnumRuleCall_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleBoundParameterNameID_in_ruleElementFigureParameter12444);
                    lv_paramId_3_0=ruleBoundParameterNameID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getElementFigureParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"paramId",
                              		lv_paramId_3_0, 
                              		"BoundParameterNameID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_4=(Token)match(input,21,FOLLOW_21_in_ruleElementFigureParameter12456); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getElementFigureParameterAccess().getColonKeyword_1_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5702:1: ( (lv_boundValue_5_0= ruleXRectangle ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5703:1: (lv_boundValue_5_0= ruleXRectangle )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5703:1: (lv_boundValue_5_0= ruleXRectangle )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5704:3: lv_boundValue_5_0= ruleXRectangle
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getElementFigureParameterAccess().getBoundValueXRectangleParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXRectangle_in_ruleElementFigureParameter12477);
                    lv_boundValue_5_0=ruleXRectangle();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getElementFigureParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"boundValue",
                              		lv_boundValue_5_0, 
                              		"XRectangle");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElementFigureParameter"


    // $ANTLR start "entryRuleColorDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5728:1: entryRuleColorDef returns [EObject current=null] : iv_ruleColorDef= ruleColorDef EOF ;
    public final EObject entryRuleColorDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleColorDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5729:2: (iv_ruleColorDef= ruleColorDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5730:2: iv_ruleColorDef= ruleColorDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getColorDefRule()); 
            }
            pushFollow(FOLLOW_ruleColorDef_in_entryRuleColorDef12514);
            iv_ruleColorDef=ruleColorDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleColorDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleColorDef12524); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleColorDef"


    // $ANTLR start "ruleColorDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5737:1: ruleColorDef returns [EObject current=null] : (otherlv_0= 'color' ( ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' )? (otherlv_3= '(' ( (lv_red_4_0= RULE_INT ) ) otherlv_5= ',' ( (lv_green_6_0= RULE_INT ) ) otherlv_7= ',' ( (lv_blue_8_0= RULE_INT ) ) (otherlv_9= ',' ( (lv_alpha_10_0= RULE_INT ) ) )? otherlv_11= ')' ) ) ;
    public final EObject ruleColorDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_red_4_0=null;
        Token otherlv_5=null;
        Token lv_green_6_0=null;
        Token otherlv_7=null;
        Token lv_blue_8_0=null;
        Token otherlv_9=null;
        Token lv_alpha_10_0=null;
        Token otherlv_11=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5740:28: ( (otherlv_0= 'color' ( ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' )? (otherlv_3= '(' ( (lv_red_4_0= RULE_INT ) ) otherlv_5= ',' ( (lv_green_6_0= RULE_INT ) ) otherlv_7= ',' ( (lv_blue_8_0= RULE_INT ) ) (otherlv_9= ',' ( (lv_alpha_10_0= RULE_INT ) ) )? otherlv_11= ')' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5741:1: (otherlv_0= 'color' ( ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' )? (otherlv_3= '(' ( (lv_red_4_0= RULE_INT ) ) otherlv_5= ',' ( (lv_green_6_0= RULE_INT ) ) otherlv_7= ',' ( (lv_blue_8_0= RULE_INT ) ) (otherlv_9= ',' ( (lv_alpha_10_0= RULE_INT ) ) )? otherlv_11= ')' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5741:1: (otherlv_0= 'color' ( ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' )? (otherlv_3= '(' ( (lv_red_4_0= RULE_INT ) ) otherlv_5= ',' ( (lv_green_6_0= RULE_INT ) ) otherlv_7= ',' ( (lv_blue_8_0= RULE_INT ) ) (otherlv_9= ',' ( (lv_alpha_10_0= RULE_INT ) ) )? otherlv_11= ')' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5741:3: otherlv_0= 'color' ( ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' )? (otherlv_3= '(' ( (lv_red_4_0= RULE_INT ) ) otherlv_5= ',' ( (lv_green_6_0= RULE_INT ) ) otherlv_7= ',' ( (lv_blue_8_0= RULE_INT ) ) (otherlv_9= ',' ( (lv_alpha_10_0= RULE_INT ) ) )? otherlv_11= ')' )
            {
            otherlv_0=(Token)match(input,69,FOLLOW_69_in_ruleColorDef12561); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getColorDefAccess().getColorKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5745:1: ( ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' )?
            int alt126=2;
            int LA126_0 = input.LA(1);

            if ( (LA126_0==RULE_ID) ) {
                alt126=1;
            }
            switch (alt126) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5745:2: ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '='
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5745:2: ( (lv_name_1_0= RULE_ID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5746:1: (lv_name_1_0= RULE_ID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5746:1: (lv_name_1_0= RULE_ID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5747:3: lv_name_1_0= RULE_ID
                    {
                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleColorDef12579); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_1_0, grammarAccess.getColorDefAccess().getNameIDTerminalRuleCall_1_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getColorDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_1_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleColorDef12596); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getColorDefAccess().getEqualsSignKeyword_1_1());
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5767:3: (otherlv_3= '(' ( (lv_red_4_0= RULE_INT ) ) otherlv_5= ',' ( (lv_green_6_0= RULE_INT ) ) otherlv_7= ',' ( (lv_blue_8_0= RULE_INT ) ) (otherlv_9= ',' ( (lv_alpha_10_0= RULE_INT ) ) )? otherlv_11= ')' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5767:5: otherlv_3= '(' ( (lv_red_4_0= RULE_INT ) ) otherlv_5= ',' ( (lv_green_6_0= RULE_INT ) ) otherlv_7= ',' ( (lv_blue_8_0= RULE_INT ) ) (otherlv_9= ',' ( (lv_alpha_10_0= RULE_INT ) ) )? otherlv_11= ')'
            {
            otherlv_3=(Token)match(input,19,FOLLOW_19_in_ruleColorDef12611); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getColorDefAccess().getLeftParenthesisKeyword_2_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5771:1: ( (lv_red_4_0= RULE_INT ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5772:1: (lv_red_4_0= RULE_INT )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5772:1: (lv_red_4_0= RULE_INT )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5773:3: lv_red_4_0= RULE_INT
            {
            lv_red_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleColorDef12628); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_red_4_0, grammarAccess.getColorDefAccess().getRedINTTerminalRuleCall_2_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getColorDefRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"red",
                      		lv_red_4_0, 
                      		"INT");
              	    
            }

            }


            }

            otherlv_5=(Token)match(input,37,FOLLOW_37_in_ruleColorDef12645); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getColorDefAccess().getCommaKeyword_2_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5793:1: ( (lv_green_6_0= RULE_INT ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5794:1: (lv_green_6_0= RULE_INT )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5794:1: (lv_green_6_0= RULE_INT )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5795:3: lv_green_6_0= RULE_INT
            {
            lv_green_6_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleColorDef12662); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_green_6_0, grammarAccess.getColorDefAccess().getGreenINTTerminalRuleCall_2_3_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getColorDefRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"green",
                      		lv_green_6_0, 
                      		"INT");
              	    
            }

            }


            }

            otherlv_7=(Token)match(input,37,FOLLOW_37_in_ruleColorDef12679); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getColorDefAccess().getCommaKeyword_2_4());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5815:1: ( (lv_blue_8_0= RULE_INT ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5816:1: (lv_blue_8_0= RULE_INT )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5816:1: (lv_blue_8_0= RULE_INT )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5817:3: lv_blue_8_0= RULE_INT
            {
            lv_blue_8_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleColorDef12696); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_blue_8_0, grammarAccess.getColorDefAccess().getBlueINTTerminalRuleCall_2_5_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getColorDefRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"blue",
                      		lv_blue_8_0, 
                      		"INT");
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5833:2: (otherlv_9= ',' ( (lv_alpha_10_0= RULE_INT ) ) )?
            int alt127=2;
            int LA127_0 = input.LA(1);

            if ( (LA127_0==37) ) {
                alt127=1;
            }
            switch (alt127) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5833:4: otherlv_9= ',' ( (lv_alpha_10_0= RULE_INT ) )
                    {
                    otherlv_9=(Token)match(input,37,FOLLOW_37_in_ruleColorDef12714); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_9, grammarAccess.getColorDefAccess().getCommaKeyword_2_6_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5837:1: ( (lv_alpha_10_0= RULE_INT ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5838:1: (lv_alpha_10_0= RULE_INT )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5838:1: (lv_alpha_10_0= RULE_INT )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5839:3: lv_alpha_10_0= RULE_INT
                    {
                    lv_alpha_10_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleColorDef12731); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_alpha_10_0, grammarAccess.getColorDefAccess().getAlphaINTTerminalRuleCall_2_6_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getColorDefRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"alpha",
                              		lv_alpha_10_0, 
                              		"INT");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_11=(Token)match(input,23,FOLLOW_23_in_ruleColorDef12750); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_11, grammarAccess.getColorDefAccess().getRightParenthesisKeyword_2_7());
                  
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleColorDef"


    // $ANTLR start "entryRuleValidatorDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5867:1: entryRuleValidatorDef returns [EObject current=null] : iv_ruleValidatorDef= ruleValidatorDef EOF ;
    public final EObject entryRuleValidatorDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleValidatorDef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5868:2: (iv_ruleValidatorDef= ruleValidatorDef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5869:2: iv_ruleValidatorDef= ruleValidatorDef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getValidatorDefRule()); 
            }
            pushFollow(FOLLOW_ruleValidatorDef_in_entryRuleValidatorDef12787);
            iv_ruleValidatorDef=ruleValidatorDef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleValidatorDef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleValidatorDef12797); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValidatorDef"


    // $ANTLR start "ruleValidatorDef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5876:1: ruleValidatorDef returns [EObject current=null] : (otherlv_0= 'validator' ( ( (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING ) ) )? ( (otherlv_2= 'class' ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) ) ) | (otherlv_4= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_6= ':' ( (lv_tags_7_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_8= 'end' ) )? ) ;
    public final EObject ruleValidatorDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_2=null;
        Token otherlv_2=null;
        Token lv_clazz_3_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_name_1_1 = null;

        AntlrDatatypeRuleToken lv_clazz_3_1 = null;

        EObject lv_tags_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5879:28: ( (otherlv_0= 'validator' ( ( (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING ) ) )? ( (otherlv_2= 'class' ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) ) ) | (otherlv_4= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_6= ':' ( (lv_tags_7_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_8= 'end' ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5880:1: (otherlv_0= 'validator' ( ( (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING ) ) )? ( (otherlv_2= 'class' ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) ) ) | (otherlv_4= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_6= ':' ( (lv_tags_7_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_8= 'end' ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5880:1: (otherlv_0= 'validator' ( ( (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING ) ) )? ( (otherlv_2= 'class' ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) ) ) | (otherlv_4= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_6= ':' ( (lv_tags_7_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_8= 'end' ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5880:3: otherlv_0= 'validator' ( ( (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING ) ) )? ( (otherlv_2= 'class' ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) ) ) | (otherlv_4= 'extends' ( ( ruleQualifiedName ) ) ) ) (otherlv_6= ':' ( (lv_tags_7_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_8= 'end' ) )?
            {
            otherlv_0=(Token)match(input,66,FOLLOW_66_in_ruleValidatorDef12834); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getValidatorDefAccess().getValidatorKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5884:1: ( ( (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING ) ) )?
            int alt129=2;
            int LA129_0 = input.LA(1);

            if ( ((LA129_0>=RULE_STRING && LA129_0<=RULE_ID)) ) {
                alt129=1;
            }
            switch (alt129) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5885:1: ( (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5885:1: ( (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5886:1: (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5886:1: (lv_name_1_1= ruleQualifiedName | lv_name_1_2= RULE_STRING )
                    int alt128=2;
                    int LA128_0 = input.LA(1);

                    if ( (LA128_0==RULE_ID) ) {
                        alt128=1;
                    }
                    else if ( (LA128_0==RULE_STRING) ) {
                        alt128=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 128, 0, input);

                        throw nvae;
                    }
                    switch (alt128) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5887:3: lv_name_1_1= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getValidatorDefAccess().getNameQualifiedNameParserRuleCall_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleQualifiedName_in_ruleValidatorDef12857);
                            lv_name_1_1=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getValidatorDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"name",
                                      		lv_name_1_1, 
                                      		"QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5902:8: lv_name_1_2= RULE_STRING
                            {
                            lv_name_1_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleValidatorDef12872); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_name_1_2, grammarAccess.getValidatorDefAccess().getNameSTRINGTerminalRuleCall_1_0_1()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getValidatorDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"name",
                                      		lv_name_1_2, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5920:3: ( (otherlv_2= 'class' ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) ) ) | (otherlv_4= 'extends' ( ( ruleQualifiedName ) ) ) )
            int alt131=2;
            int LA131_0 = input.LA(1);

            if ( (LA131_0==71) ) {
                alt131=1;
            }
            else if ( (LA131_0==48) ) {
                alt131=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 131, 0, input);

                throw nvae;
            }
            switch (alt131) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5920:4: (otherlv_2= 'class' ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5920:4: (otherlv_2= 'class' ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5920:6: otherlv_2= 'class' ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) )
                    {
                    otherlv_2=(Token)match(input,71,FOLLOW_71_in_ruleValidatorDef12895); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getValidatorDefAccess().getClassKeyword_2_0_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5924:1: ( ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5925:1: ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5925:1: ( (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5926:1: (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5926:1: (lv_clazz_3_1= ruleQualifiedName | lv_clazz_3_2= RULE_STRING )
                    int alt130=2;
                    int LA130_0 = input.LA(1);

                    if ( (LA130_0==RULE_ID) ) {
                        alt130=1;
                    }
                    else if ( (LA130_0==RULE_STRING) ) {
                        alt130=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 130, 0, input);

                        throw nvae;
                    }
                    switch (alt130) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5927:3: lv_clazz_3_1= ruleQualifiedName
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getValidatorDefAccess().getClazzQualifiedNameParserRuleCall_2_0_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleQualifiedName_in_ruleValidatorDef12918);
                            lv_clazz_3_1=ruleQualifiedName();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getValidatorDefRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_3_1, 
                                      		"QualifiedName");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5942:8: lv_clazz_3_2= RULE_STRING
                            {
                            lv_clazz_3_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleValidatorDef12933); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              			newLeafNode(lv_clazz_3_2, grammarAccess.getValidatorDefAccess().getClazzSTRINGTerminalRuleCall_2_0_1_0_1()); 
                              		
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getValidatorDefRule());
                              	        }
                                     		setWithLastConsumed(
                                     			current, 
                                     			"clazz",
                                      		lv_clazz_3_2, 
                                      		"STRING");
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5961:6: (otherlv_4= 'extends' ( ( ruleQualifiedName ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5961:6: (otherlv_4= 'extends' ( ( ruleQualifiedName ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5961:8: otherlv_4= 'extends' ( ( ruleQualifiedName ) )
                    {
                    otherlv_4=(Token)match(input,48,FOLLOW_48_in_ruleValidatorDef12961); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getValidatorDefAccess().getExtendsKeyword_2_1_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5965:1: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5966:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5966:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5967:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getValidatorDefRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getValidatorDefAccess().getSuperElementValidatorDefCrossReference_2_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleValidatorDef12984);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5980:4: (otherlv_6= ':' ( (lv_tags_7_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_8= 'end' ) )?
            int alt133=2;
            int LA133_0 = input.LA(1);

            if ( (LA133_0==21) ) {
                int LA133_1 = input.LA(2);

                if ( ((LA133_1>=RULE_STRING && LA133_1<=RULE_ID)||(LA133_1>=39 && LA133_1<=40)) ) {
                    alt133=1;
                }
                else if ( (LA133_1==29) ) {
                    alt133=1;
                }
            }
            switch (alt133) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5980:6: otherlv_6= ':' ( (lv_tags_7_0= ruleTagDef ) )* ( ( 'end' )=>otherlv_8= 'end' )
                    {
                    otherlv_6=(Token)match(input,21,FOLLOW_21_in_ruleValidatorDef12999); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getValidatorDefAccess().getColonKeyword_3_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5984:1: ( (lv_tags_7_0= ruleTagDef ) )*
                    loop132:
                    do {
                        int alt132=2;
                        int LA132_0 = input.LA(1);

                        if ( ((LA132_0>=RULE_STRING && LA132_0<=RULE_ID)||(LA132_0>=39 && LA132_0<=40)) ) {
                            alt132=1;
                        }


                        switch (alt132) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5985:1: (lv_tags_7_0= ruleTagDef )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5985:1: (lv_tags_7_0= ruleTagDef )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:5986:3: lv_tags_7_0= ruleTagDef
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getValidatorDefAccess().getTagsTagDefParserRuleCall_3_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleTagDef_in_ruleValidatorDef13020);
                    	    lv_tags_7_0=ruleTagDef();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getValidatorDefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"tags",
                    	              		lv_tags_7_0, 
                    	              		"TagDef");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop132;
                        }
                    } while (true);

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6002:3: ( ( 'end' )=>otherlv_8= 'end' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6002:4: ( 'end' )=>otherlv_8= 'end'
                    {
                    otherlv_8=(Token)match(input,29,FOLLOW_29_in_ruleValidatorDef13041); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getValidatorDefAccess().getEndKeyword_3_2());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValidatorDef"


    // $ANTLR start "entryRuleAnchor"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6015:1: entryRuleAnchor returns [EObject current=null] : iv_ruleAnchor= ruleAnchor EOF ;
    public final EObject entryRuleAnchor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAnchor = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6016:2: (iv_ruleAnchor= ruleAnchor EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6017:2: iv_ruleAnchor= ruleAnchor EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAnchorRule()); 
            }
            pushFollow(FOLLOW_ruleAnchor_in_entryRuleAnchor13080);
            iv_ruleAnchor=ruleAnchor();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAnchor; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAnchor13090); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAnchor"


    // $ANTLR start "ruleAnchor"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6024:1: ruleAnchor returns [EObject current=null] : ( () ( ( ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) ) ) | otherlv_6= 'none' ) ) ;
    public final EObject ruleAnchor() throws RecognitionException {
        EObject current = null;

        Token lv_anchorTop_2_0=null;
        Token lv_anchorLeft_3_0=null;
        Token lv_anchorRight_4_0=null;
        Token lv_anchorBottom_5_0=null;
        Token otherlv_6=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6027:28: ( ( () ( ( ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) ) ) | otherlv_6= 'none' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6028:1: ( () ( ( ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) ) ) | otherlv_6= 'none' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6028:1: ( () ( ( ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) ) ) | otherlv_6= 'none' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6028:2: () ( ( ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) ) ) | otherlv_6= 'none' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6028:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6029:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getAnchorAccess().getAnchorAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6034:2: ( ( ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) ) ) | otherlv_6= 'none' )
            int alt135=2;
            int LA135_0 = input.LA(1);

            if ( ((LA135_0>=75 && LA135_0<=78)) ) {
                alt135=1;
            }
            else if ( (LA135_0==79) ) {
                alt135=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 135, 0, input);

                throw nvae;
            }
            switch (alt135) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6034:3: ( ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6034:3: ( ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6036:1: ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6036:1: ( ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6037:2: ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?)
                    {
                    getUnorderedGroupHelper().enter(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0());
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6040:2: ( ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?)
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6041:3: ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+ {...}?
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6041:3: ( ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) ) )+
                    int cnt134=0;
                    loop134:
                    do {
                        int alt134=5;
                        int LA134_0 = input.LA(1);

                        if ( LA134_0 ==75 && getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 0) ) {
                            alt134=1;
                        }
                        else if ( LA134_0 ==76 && getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 1) ) {
                            alt134=2;
                        }
                        else if ( LA134_0 ==77 && getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 2) ) {
                            alt134=3;
                        }
                        else if ( LA134_0 ==78 && getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 3) ) {
                            alt134=4;
                        }


                        switch (alt134) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6043:4: ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6043:4: ({...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6044:5: {...}? => ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 0) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleAnchor", "getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 0)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6044:105: ( ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6045:6: ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 0);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6048:6: ({...}? => ( (lv_anchorTop_2_0= 'top' ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6048:7: {...}? => ( (lv_anchorTop_2_0= 'top' ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleAnchor", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6048:16: ( (lv_anchorTop_2_0= 'top' ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6049:1: (lv_anchorTop_2_0= 'top' )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6049:1: (lv_anchorTop_2_0= 'top' )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6050:3: lv_anchorTop_2_0= 'top'
                    	    {
                    	    lv_anchorTop_2_0=(Token)match(input,75,FOLLOW_75_in_ruleAnchor13188); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	              newLeafNode(lv_anchorTop_2_0, grammarAccess.getAnchorAccess().getAnchorTopTopKeyword_1_0_0_0());
                    	          
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getAnchorRule());
                    	      	        }
                    	             		setWithLastConsumed(current, "anchorTop", true, "top");
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0());

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6070:4: ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6070:4: ({...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6071:5: {...}? => ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 1) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleAnchor", "getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 1)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6071:105: ( ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6072:6: ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 1);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6075:6: ({...}? => ( (lv_anchorLeft_3_0= 'left' ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6075:7: {...}? => ( (lv_anchorLeft_3_0= 'left' ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleAnchor", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6075:16: ( (lv_anchorLeft_3_0= 'left' ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6076:1: (lv_anchorLeft_3_0= 'left' )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6076:1: (lv_anchorLeft_3_0= 'left' )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6077:3: lv_anchorLeft_3_0= 'left'
                    	    {
                    	    lv_anchorLeft_3_0=(Token)match(input,76,FOLLOW_76_in_ruleAnchor13273); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	              newLeafNode(lv_anchorLeft_3_0, grammarAccess.getAnchorAccess().getAnchorLeftLeftKeyword_1_0_1_0());
                    	          
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getAnchorRule());
                    	      	        }
                    	             		setWithLastConsumed(current, "anchorLeft", true, "left");
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0());

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6097:4: ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6097:4: ({...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6098:5: {...}? => ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 2) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleAnchor", "getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 2)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6098:105: ( ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6099:6: ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 2);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6102:6: ({...}? => ( (lv_anchorRight_4_0= 'right' ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6102:7: {...}? => ( (lv_anchorRight_4_0= 'right' ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleAnchor", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6102:16: ( (lv_anchorRight_4_0= 'right' ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6103:1: (lv_anchorRight_4_0= 'right' )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6103:1: (lv_anchorRight_4_0= 'right' )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6104:3: lv_anchorRight_4_0= 'right'
                    	    {
                    	    lv_anchorRight_4_0=(Token)match(input,77,FOLLOW_77_in_ruleAnchor13358); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	              newLeafNode(lv_anchorRight_4_0, grammarAccess.getAnchorAccess().getAnchorRightRightKeyword_1_0_2_0());
                    	          
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getAnchorRule());
                    	      	        }
                    	             		setWithLastConsumed(current, "anchorRight", true, "right");
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0());

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 4 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6124:4: ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6124:4: ({...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6125:5: {...}? => ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) )
                    	    {
                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 3) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleAnchor", "getUnorderedGroupHelper().canSelect(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 3)");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6125:105: ( ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6126:6: ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) )
                    	    {
                    	    getUnorderedGroupHelper().select(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0(), 3);
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6129:6: ({...}? => ( (lv_anchorBottom_5_0= 'bottom' ) ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6129:7: {...}? => ( (lv_anchorBottom_5_0= 'bottom' ) )
                    	    {
                    	    if ( !((true)) ) {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        throw new FailedPredicateException(input, "ruleAnchor", "true");
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6129:16: ( (lv_anchorBottom_5_0= 'bottom' ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6130:1: (lv_anchorBottom_5_0= 'bottom' )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6130:1: (lv_anchorBottom_5_0= 'bottom' )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6131:3: lv_anchorBottom_5_0= 'bottom'
                    	    {
                    	    lv_anchorBottom_5_0=(Token)match(input,78,FOLLOW_78_in_ruleAnchor13443); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	              newLeafNode(lv_anchorBottom_5_0, grammarAccess.getAnchorAccess().getAnchorBottomBottomKeyword_1_0_3_0());
                    	          
                    	    }
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getAnchorRule());
                    	      	        }
                    	             		setWithLastConsumed(current, "anchorBottom", true, "bottom");
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }

                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0());

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt134 >= 1 ) break loop134;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(134, input);
                                throw eee;
                        }
                        cnt134++;
                    } while (true);

                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0()) ) {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        throw new FailedPredicateException(input, "ruleAnchor", "getUnorderedGroupHelper().canLeave(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0())");
                    }

                    }


                    }

                    getUnorderedGroupHelper().leave(grammarAccess.getAnchorAccess().getUnorderedGroup_1_0());

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6160:7: otherlv_6= 'none'
                    {
                    otherlv_6=(Token)match(input,79,FOLLOW_79_in_ruleAnchor13520); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getAnchorAccess().getNoneKeyword_1_1());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAnchor"


    // $ANTLR start "entryRuleXRectangle"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6172:1: entryRuleXRectangle returns [EObject current=null] : iv_ruleXRectangle= ruleXRectangle EOF ;
    public final EObject entryRuleXRectangle() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXRectangle = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6173:2: (iv_ruleXRectangle= ruleXRectangle EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6174:2: iv_ruleXRectangle= ruleXRectangle EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXRectangleRule()); 
            }
            pushFollow(FOLLOW_ruleXRectangle_in_entryRuleXRectangle13557);
            iv_ruleXRectangle=ruleXRectangle();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXRectangle; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXRectangle13567); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXRectangle"


    // $ANTLR start "ruleXRectangle"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6181:1: ruleXRectangle returns [EObject current=null] : (otherlv_0= '(' ( (lv_x_1_0= ruleXExpression ) ) otherlv_2= ',' ( (lv_y_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_w_5_0= ruleXExpression ) ) otherlv_6= ',' ( (lv_h_7_0= ruleXExpression ) ) )? otherlv_8= ')' ) ;
    public final EObject ruleXRectangle() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        EObject lv_x_1_0 = null;

        EObject lv_y_3_0 = null;

        EObject lv_w_5_0 = null;

        EObject lv_h_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6184:28: ( (otherlv_0= '(' ( (lv_x_1_0= ruleXExpression ) ) otherlv_2= ',' ( (lv_y_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_w_5_0= ruleXExpression ) ) otherlv_6= ',' ( (lv_h_7_0= ruleXExpression ) ) )? otherlv_8= ')' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6185:1: (otherlv_0= '(' ( (lv_x_1_0= ruleXExpression ) ) otherlv_2= ',' ( (lv_y_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_w_5_0= ruleXExpression ) ) otherlv_6= ',' ( (lv_h_7_0= ruleXExpression ) ) )? otherlv_8= ')' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6185:1: (otherlv_0= '(' ( (lv_x_1_0= ruleXExpression ) ) otherlv_2= ',' ( (lv_y_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_w_5_0= ruleXExpression ) ) otherlv_6= ',' ( (lv_h_7_0= ruleXExpression ) ) )? otherlv_8= ')' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6185:3: otherlv_0= '(' ( (lv_x_1_0= ruleXExpression ) ) otherlv_2= ',' ( (lv_y_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_w_5_0= ruleXExpression ) ) otherlv_6= ',' ( (lv_h_7_0= ruleXExpression ) ) )? otherlv_8= ')'
            {
            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleXRectangle13604); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getXRectangleAccess().getLeftParenthesisKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6189:1: ( (lv_x_1_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6190:1: (lv_x_1_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6190:1: (lv_x_1_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6191:3: lv_x_1_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXRectangleAccess().getXXExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXRectangle13625);
            lv_x_1_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXRectangleRule());
              	        }
                     		set(
                     			current, 
                     			"x",
                      		lv_x_1_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,37,FOLLOW_37_in_ruleXRectangle13637); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXRectangleAccess().getCommaKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6211:1: ( (lv_y_3_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6212:1: (lv_y_3_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6212:1: (lv_y_3_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6213:3: lv_y_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXRectangleAccess().getYXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXRectangle13658);
            lv_y_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXRectangleRule());
              	        }
                     		set(
                     			current, 
                     			"y",
                      		lv_y_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6229:2: (otherlv_4= ',' ( (lv_w_5_0= ruleXExpression ) ) otherlv_6= ',' ( (lv_h_7_0= ruleXExpression ) ) )?
            int alt136=2;
            int LA136_0 = input.LA(1);

            if ( (LA136_0==37) ) {
                alt136=1;
            }
            switch (alt136) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6229:4: otherlv_4= ',' ( (lv_w_5_0= ruleXExpression ) ) otherlv_6= ',' ( (lv_h_7_0= ruleXExpression ) )
                    {
                    otherlv_4=(Token)match(input,37,FOLLOW_37_in_ruleXRectangle13671); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getXRectangleAccess().getCommaKeyword_4_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6233:1: ( (lv_w_5_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6234:1: (lv_w_5_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6234:1: (lv_w_5_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6235:3: lv_w_5_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXRectangleAccess().getWXExpressionParserRuleCall_4_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXRectangle13692);
                    lv_w_5_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXRectangleRule());
                      	        }
                             		set(
                             			current, 
                             			"w",
                              		lv_w_5_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_6=(Token)match(input,37,FOLLOW_37_in_ruleXRectangle13704); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXRectangleAccess().getCommaKeyword_4_2());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6255:1: ( (lv_h_7_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6256:1: (lv_h_7_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6256:1: (lv_h_7_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6257:3: lv_h_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXRectangleAccess().getHXExpressionParserRuleCall_4_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXRectangle13725);
                    lv_h_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXRectangleRule());
                      	        }
                             		set(
                             			current, 
                             			"h",
                              		lv_h_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_8=(Token)match(input,23,FOLLOW_23_in_ruleXRectangle13739); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getXRectangleAccess().getRightParenthesisKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXRectangle"


    // $ANTLR start "entryRuleXReferenceExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6285:1: entryRuleXReferenceExpression returns [EObject current=null] : iv_ruleXReferenceExpression= ruleXReferenceExpression EOF ;
    public final EObject entryRuleXReferenceExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXReferenceExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6286:2: (iv_ruleXReferenceExpression= ruleXReferenceExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6287:2: iv_ruleXReferenceExpression= ruleXReferenceExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXReferenceExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXReferenceExpression_in_entryRuleXReferenceExpression13775);
            iv_ruleXReferenceExpression=ruleXReferenceExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXReferenceExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXReferenceExpression13785); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXReferenceExpression"


    // $ANTLR start "ruleXReferenceExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6294:1: ruleXReferenceExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) ) ) ) ) ;
    public final EObject ruleXReferenceExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_1 = null;

        EObject lv_definition_2_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6297:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6298:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6298:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) ) ) ) )
            int alt138=2;
            int LA138_0 = input.LA(1);

            if ( (LA138_0==RULE_ID) ) {
                alt138=1;
            }
            else if ( (LA138_0==80) ) {
                alt138=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 138, 0, input);

                throw nvae;
            }
            switch (alt138) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6298:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6298:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6299:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6299:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6300:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXReferenceExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXReferenceExpressionAccess().getReferenceModuleItemCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXReferenceExpression13833);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6314:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6314:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6314:7: ( (lv_newInstance_1_0= 'new' ) ) ( ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6314:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6315:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6315:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6316:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXReferenceExpression13858); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXReferenceExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXReferenceExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6329:2: ( ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6330:1: ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6330:1: ( (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6331:1: (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6331:1: (lv_definition_2_1= ruleColorDef | lv_definition_2_2= ruleDecoratorLocatorDef )
                    int alt137=2;
                    int LA137_0 = input.LA(1);

                    if ( (LA137_0==69) ) {
                        alt137=1;
                    }
                    else if ( (LA137_0==72) ) {
                        alt137=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 137, 0, input);

                        throw nvae;
                    }
                    switch (alt137) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6332:3: lv_definition_2_1= ruleColorDef
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXReferenceExpressionAccess().getDefinitionColorDefParserRuleCall_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleColorDef_in_ruleXReferenceExpression13894);
                            lv_definition_2_1=ruleColorDef();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXReferenceExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"definition",
                                      		lv_definition_2_1, 
                                      		"ColorDef");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6347:8: lv_definition_2_2= ruleDecoratorLocatorDef
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXReferenceExpressionAccess().getDefinitionDecoratorLocatorDefParserRuleCall_1_1_0_1()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleDecoratorLocatorDef_in_ruleXReferenceExpression13913);
                            lv_definition_2_2=ruleDecoratorLocatorDef();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXReferenceExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"definition",
                                      		lv_definition_2_2, 
                                      		"DecoratorLocatorDef");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXReferenceExpression"


    // $ANTLR start "entryRuleXColorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6373:1: entryRuleXColorExpression returns [EObject current=null] : iv_ruleXColorExpression= ruleXColorExpression EOF ;
    public final EObject entryRuleXColorExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXColorExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6374:2: (iv_ruleXColorExpression= ruleXColorExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6375:2: iv_ruleXColorExpression= ruleXColorExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXColorExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXColorExpression_in_entryRuleXColorExpression13953);
            iv_ruleXColorExpression=ruleXColorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXColorExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXColorExpression13963); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXColorExpression"


    // $ANTLR start "ruleXColorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6382:1: ruleXColorExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleColorDef ) ) ) ) ;
    public final EObject ruleXColorExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6385:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleColorDef ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6386:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleColorDef ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6386:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleColorDef ) ) ) )
            int alt139=2;
            int LA139_0 = input.LA(1);

            if ( (LA139_0==RULE_ID) ) {
                alt139=1;
            }
            else if ( (LA139_0==80) ) {
                alt139=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 139, 0, input);

                throw nvae;
            }
            switch (alt139) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6386:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6386:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6387:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6387:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6388:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXColorExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXColorExpressionAccess().getReferenceColorDefCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXColorExpression14011);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6402:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleColorDef ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6402:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleColorDef ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6402:7: ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleColorDef ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6402:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6403:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6403:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6404:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXColorExpression14036); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXColorExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXColorExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6417:2: ( (lv_definition_2_0= ruleColorDef ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6418:1: (lv_definition_2_0= ruleColorDef )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6418:1: (lv_definition_2_0= ruleColorDef )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6419:3: lv_definition_2_0= ruleColorDef
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXColorExpressionAccess().getDefinitionColorDefParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleColorDef_in_ruleXColorExpression14070);
                    lv_definition_2_0=ruleColorDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXColorExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_2_0, 
                              		"ColorDef");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXColorExpression"


    // $ANTLR start "entryRuleXFigureExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6443:1: entryRuleXFigureExpression returns [EObject current=null] : iv_ruleXFigureExpression= ruleXFigureExpression EOF ;
    public final EObject entryRuleXFigureExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFigureExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6444:2: (iv_ruleXFigureExpression= ruleXFigureExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6445:2: iv_ruleXFigureExpression= ruleXFigureExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFigureExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXFigureExpression_in_entryRuleXFigureExpression14107);
            iv_ruleXFigureExpression=ruleXFigureExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFigureExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFigureExpression14117); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFigureExpression"


    // $ANTLR start "ruleXFigureExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6452:1: ruleXFigureExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleFigureDef ) ) ) ) ;
    public final EObject ruleXFigureExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6455:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleFigureDef ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6456:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleFigureDef ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6456:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleFigureDef ) ) ) )
            int alt140=2;
            int LA140_0 = input.LA(1);

            if ( (LA140_0==RULE_ID) ) {
                alt140=1;
            }
            else if ( (LA140_0==80) ) {
                alt140=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 140, 0, input);

                throw nvae;
            }
            switch (alt140) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6456:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6456:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6457:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6457:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6458:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFigureExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFigureExpressionAccess().getReferenceFigureDefCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXFigureExpression14165);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6472:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleFigureDef ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6472:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleFigureDef ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6472:7: ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleFigureDef ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6472:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6473:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6473:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6474:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXFigureExpression14190); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXFigureExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFigureExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6487:2: ( (lv_definition_2_0= ruleFigureDef ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6488:1: (lv_definition_2_0= ruleFigureDef )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6488:1: (lv_definition_2_0= ruleFigureDef )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6489:3: lv_definition_2_0= ruleFigureDef
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFigureExpressionAccess().getDefinitionFigureDefParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleFigureDef_in_ruleXFigureExpression14224);
                    lv_definition_2_0=ruleFigureDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXFigureExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_2_0, 
                              		"FigureDef");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFigureExpression"


    // $ANTLR start "entryRuleXGroupExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6513:1: entryRuleXGroupExpression returns [EObject current=null] : iv_ruleXGroupExpression= ruleXGroupExpression EOF ;
    public final EObject entryRuleXGroupExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXGroupExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6514:2: (iv_ruleXGroupExpression= ruleXGroupExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6515:2: iv_ruleXGroupExpression= ruleXGroupExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXGroupExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXGroupExpression_in_entryRuleXGroupExpression14261);
            iv_ruleXGroupExpression=ruleXGroupExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXGroupExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXGroupExpression14271); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXGroupExpression"


    // $ANTLR start "ruleXGroupExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6522:1: ruleXGroupExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolGroup ) ) ) ) ;
    public final EObject ruleXGroupExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6525:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolGroup ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6526:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolGroup ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6526:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolGroup ) ) ) )
            int alt141=2;
            int LA141_0 = input.LA(1);

            if ( (LA141_0==RULE_ID) ) {
                alt141=1;
            }
            else if ( (LA141_0==80) ) {
                alt141=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 141, 0, input);

                throw nvae;
            }
            switch (alt141) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6526:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6526:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6527:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6527:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6528:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXGroupExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXGroupExpressionAccess().getReferenceToolGroupCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXGroupExpression14319);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6542:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolGroup ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6542:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolGroup ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6542:7: ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolGroup ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6542:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6543:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6543:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6544:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXGroupExpression14344); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXGroupExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXGroupExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6557:2: ( (lv_definition_2_0= ruleToolGroup ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6558:1: (lv_definition_2_0= ruleToolGroup )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6558:1: (lv_definition_2_0= ruleToolGroup )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6559:3: lv_definition_2_0= ruleToolGroup
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXGroupExpressionAccess().getDefinitionToolGroupParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleToolGroup_in_ruleXGroupExpression14378);
                    lv_definition_2_0=ruleToolGroup();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXGroupExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_2_0, 
                              		"ToolGroup");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXGroupExpression"


    // $ANTLR start "entryRuleXToolItemExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6583:1: entryRuleXToolItemExpression returns [EObject current=null] : iv_ruleXToolItemExpression= ruleXToolItemExpression EOF ;
    public final EObject entryRuleXToolItemExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXToolItemExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6584:2: (iv_ruleXToolItemExpression= ruleXToolItemExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6585:2: iv_ruleXToolItemExpression= ruleXToolItemExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXToolItemExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXToolItemExpression_in_entryRuleXToolItemExpression14415);
            iv_ruleXToolItemExpression=ruleXToolItemExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXToolItemExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXToolItemExpression14425); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXToolItemExpression"


    // $ANTLR start "ruleXToolItemExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6592:1: ruleXToolItemExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolItem ) ) ) ) ;
    public final EObject ruleXToolItemExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6595:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolItem ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6596:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolItem ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6596:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolItem ) ) ) )
            int alt142=2;
            int LA142_0 = input.LA(1);

            if ( (LA142_0==RULE_ID) ) {
                alt142=1;
            }
            else if ( (LA142_0==80) ) {
                alt142=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 142, 0, input);

                throw nvae;
            }
            switch (alt142) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6596:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6596:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6597:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6597:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6598:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXToolItemExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXToolItemExpressionAccess().getReferenceToolItemCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXToolItemExpression14473);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6612:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolItem ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6612:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolItem ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6612:7: ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleToolItem ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6612:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6613:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6613:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6614:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXToolItemExpression14498); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXToolItemExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXToolItemExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6627:2: ( (lv_definition_2_0= ruleToolItem ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6628:1: (lv_definition_2_0= ruleToolItem )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6628:1: (lv_definition_2_0= ruleToolItem )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6629:3: lv_definition_2_0= ruleToolItem
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXToolItemExpressionAccess().getDefinitionToolItemParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleToolItem_in_ruleXToolItemExpression14532);
                    lv_definition_2_0=ruleToolItem();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXToolItemExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_2_0, 
                              		"ToolItem");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXToolItemExpression"


    // $ANTLR start "entryRuleXViewExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6653:1: entryRuleXViewExpression returns [EObject current=null] : iv_ruleXViewExpression= ruleXViewExpression EOF ;
    public final EObject entryRuleXViewExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXViewExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6654:2: (iv_ruleXViewExpression= ruleXViewExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6655:2: iv_ruleXViewExpression= ruleXViewExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXViewExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXViewExpression_in_entryRuleXViewExpression14569);
            iv_ruleXViewExpression=ruleXViewExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXViewExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXViewExpression14579); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXViewExpression"


    // $ANTLR start "ruleXViewExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6662:1: ruleXViewExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleViewDef ) ) ) ) ;
    public final EObject ruleXViewExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6665:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleViewDef ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6666:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleViewDef ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6666:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleViewDef ) ) ) )
            int alt143=2;
            int LA143_0 = input.LA(1);

            if ( (LA143_0==RULE_ID) ) {
                alt143=1;
            }
            else if ( (LA143_0==80) ) {
                alt143=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 143, 0, input);

                throw nvae;
            }
            switch (alt143) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6666:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6666:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6667:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6667:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6668:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXViewExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXViewExpressionAccess().getReferenceViewDefCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXViewExpression14627);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6682:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleViewDef ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6682:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleViewDef ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6682:7: ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleViewDef ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6682:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6683:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6683:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6684:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXViewExpression14652); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXViewExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXViewExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6697:2: ( (lv_definition_2_0= ruleViewDef ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6698:1: (lv_definition_2_0= ruleViewDef )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6698:1: (lv_definition_2_0= ruleViewDef )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6699:3: lv_definition_2_0= ruleViewDef
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXViewExpressionAccess().getDefinitionViewDefParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleViewDef_in_ruleXViewExpression14686);
                    lv_definition_2_0=ruleViewDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXViewExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_2_0, 
                              		"ViewDef");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXViewExpression"


    // $ANTLR start "entryRuleXConnectionStyleExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6723:1: entryRuleXConnectionStyleExpression returns [EObject current=null] : iv_ruleXConnectionStyleExpression= ruleXConnectionStyleExpression EOF ;
    public final EObject entryRuleXConnectionStyleExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXConnectionStyleExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6724:2: (iv_ruleXConnectionStyleExpression= ruleXConnectionStyleExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6725:2: iv_ruleXConnectionStyleExpression= ruleXConnectionStyleExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXConnectionStyleExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXConnectionStyleExpression_in_entryRuleXConnectionStyleExpression14723);
            iv_ruleXConnectionStyleExpression=ruleXConnectionStyleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXConnectionStyleExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXConnectionStyleExpression14733); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXConnectionStyleExpression"


    // $ANTLR start "ruleXConnectionStyleExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6732:1: ruleXConnectionStyleExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleConnectionStyleDef ) ) ) ) ;
    public final EObject ruleXConnectionStyleExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6735:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleConnectionStyleDef ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6736:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleConnectionStyleDef ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6736:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleConnectionStyleDef ) ) ) )
            int alt144=2;
            int LA144_0 = input.LA(1);

            if ( (LA144_0==RULE_ID) ) {
                alt144=1;
            }
            else if ( (LA144_0==80) ) {
                alt144=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 144, 0, input);

                throw nvae;
            }
            switch (alt144) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6736:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6736:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6737:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6737:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6738:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXConnectionStyleExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConnectionStyleExpressionAccess().getReferenceConnectionStyleDefCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXConnectionStyleExpression14781);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6752:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleConnectionStyleDef ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6752:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleConnectionStyleDef ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6752:7: ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleConnectionStyleDef ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6752:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6753:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6753:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6754:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXConnectionStyleExpression14806); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXConnectionStyleExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXConnectionStyleExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6767:2: ( (lv_definition_2_0= ruleConnectionStyleDef ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6768:1: (lv_definition_2_0= ruleConnectionStyleDef )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6768:1: (lv_definition_2_0= ruleConnectionStyleDef )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6769:3: lv_definition_2_0= ruleConnectionStyleDef
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConnectionStyleExpressionAccess().getDefinitionConnectionStyleDefParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleConnectionStyleDef_in_ruleXConnectionStyleExpression14840);
                    lv_definition_2_0=ruleConnectionStyleDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConnectionStyleExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_2_0, 
                              		"ConnectionStyleDef");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXConnectionStyleExpression"


    // $ANTLR start "entryRuleXPolicyExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6793:1: entryRuleXPolicyExpression returns [EObject current=null] : iv_ruleXPolicyExpression= ruleXPolicyExpression EOF ;
    public final EObject entryRuleXPolicyExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXPolicyExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6794:2: (iv_ruleXPolicyExpression= ruleXPolicyExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6795:2: iv_ruleXPolicyExpression= ruleXPolicyExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXPolicyExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXPolicyExpression_in_entryRuleXPolicyExpression14877);
            iv_ruleXPolicyExpression=ruleXPolicyExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXPolicyExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXPolicyExpression14887); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXPolicyExpression"


    // $ANTLR start "ruleXPolicyExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6802:1: ruleXPolicyExpression returns [EObject current=null] : ( (otherlv_0= 'policy' ( ( ruleQualifiedName ) ) ) | ( ( (lv_newInstance_2_0= 'new' ) ) ( (lv_definition_3_0= rulePolicyDef ) ) ) ) ;
    public final EObject ruleXPolicyExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_newInstance_2_0=null;
        EObject lv_definition_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6805:28: ( ( (otherlv_0= 'policy' ( ( ruleQualifiedName ) ) ) | ( ( (lv_newInstance_2_0= 'new' ) ) ( (lv_definition_3_0= rulePolicyDef ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6806:1: ( (otherlv_0= 'policy' ( ( ruleQualifiedName ) ) ) | ( ( (lv_newInstance_2_0= 'new' ) ) ( (lv_definition_3_0= rulePolicyDef ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6806:1: ( (otherlv_0= 'policy' ( ( ruleQualifiedName ) ) ) | ( ( (lv_newInstance_2_0= 'new' ) ) ( (lv_definition_3_0= rulePolicyDef ) ) ) )
            int alt145=2;
            int LA145_0 = input.LA(1);

            if ( (LA145_0==74) ) {
                alt145=1;
            }
            else if ( (LA145_0==80) ) {
                alt145=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 145, 0, input);

                throw nvae;
            }
            switch (alt145) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6806:2: (otherlv_0= 'policy' ( ( ruleQualifiedName ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6806:2: (otherlv_0= 'policy' ( ( ruleQualifiedName ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6806:4: otherlv_0= 'policy' ( ( ruleQualifiedName ) )
                    {
                    otherlv_0=(Token)match(input,74,FOLLOW_74_in_ruleXPolicyExpression14925); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_0, grammarAccess.getXPolicyExpressionAccess().getPolicyKeyword_0_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6810:1: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6811:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6811:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6812:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXPolicyExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXPolicyExpressionAccess().getReferencePolicyDefCrossReference_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXPolicyExpression14948);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6826:6: ( ( (lv_newInstance_2_0= 'new' ) ) ( (lv_definition_3_0= rulePolicyDef ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6826:6: ( ( (lv_newInstance_2_0= 'new' ) ) ( (lv_definition_3_0= rulePolicyDef ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6826:7: ( (lv_newInstance_2_0= 'new' ) ) ( (lv_definition_3_0= rulePolicyDef ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6826:7: ( (lv_newInstance_2_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6827:1: (lv_newInstance_2_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6827:1: (lv_newInstance_2_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6828:3: lv_newInstance_2_0= 'new'
                    {
                    lv_newInstance_2_0=(Token)match(input,80,FOLLOW_80_in_ruleXPolicyExpression14974); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_2_0, grammarAccess.getXPolicyExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXPolicyExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6841:2: ( (lv_definition_3_0= rulePolicyDef ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6842:1: (lv_definition_3_0= rulePolicyDef )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6842:1: (lv_definition_3_0= rulePolicyDef )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6843:3: lv_definition_3_0= rulePolicyDef
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXPolicyExpressionAccess().getDefinitionPolicyDefParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_rulePolicyDef_in_ruleXPolicyExpression15008);
                    lv_definition_3_0=rulePolicyDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXPolicyExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_3_0, 
                              		"PolicyDef");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXPolicyExpression"


    // $ANTLR start "entryRuleXDecoratorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6867:1: entryRuleXDecoratorExpression returns [EObject current=null] : iv_ruleXDecoratorExpression= ruleXDecoratorExpression EOF ;
    public final EObject entryRuleXDecoratorExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXDecoratorExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6868:2: (iv_ruleXDecoratorExpression= ruleXDecoratorExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6869:2: iv_ruleXDecoratorExpression= ruleXDecoratorExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXDecoratorExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXDecoratorExpression_in_entryRuleXDecoratorExpression15045);
            iv_ruleXDecoratorExpression=ruleXDecoratorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXDecoratorExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXDecoratorExpression15055); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXDecoratorExpression"


    // $ANTLR start "ruleXDecoratorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6876:1: ruleXDecoratorExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorDef ) ) ) ) ;
    public final EObject ruleXDecoratorExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6879:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorDef ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6880:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorDef ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6880:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorDef ) ) ) )
            int alt146=2;
            int LA146_0 = input.LA(1);

            if ( (LA146_0==RULE_ID) ) {
                alt146=1;
            }
            else if ( (LA146_0==80) ) {
                alt146=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 146, 0, input);

                throw nvae;
            }
            switch (alt146) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6880:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6880:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6881:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6881:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6882:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXDecoratorExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXDecoratorExpressionAccess().getReferenceDecoratorDefCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXDecoratorExpression15103);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6896:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorDef ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6896:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorDef ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6896:7: ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorDef ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6896:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6897:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6897:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6898:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXDecoratorExpression15128); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXDecoratorExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXDecoratorExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6911:2: ( (lv_definition_2_0= ruleDecoratorDef ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6912:1: (lv_definition_2_0= ruleDecoratorDef )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6912:1: (lv_definition_2_0= ruleDecoratorDef )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6913:3: lv_definition_2_0= ruleDecoratorDef
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXDecoratorExpressionAccess().getDefinitionDecoratorDefParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDecoratorDef_in_ruleXDecoratorExpression15162);
                    lv_definition_2_0=ruleDecoratorDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXDecoratorExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_2_0, 
                              		"DecoratorDef");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXDecoratorExpression"


    // $ANTLR start "entryRuleXValidatorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6937:1: entryRuleXValidatorExpression returns [EObject current=null] : iv_ruleXValidatorExpression= ruleXValidatorExpression EOF ;
    public final EObject entryRuleXValidatorExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXValidatorExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6938:2: (iv_ruleXValidatorExpression= ruleXValidatorExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6939:2: iv_ruleXValidatorExpression= ruleXValidatorExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXValidatorExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXValidatorExpression_in_entryRuleXValidatorExpression15199);
            iv_ruleXValidatorExpression=ruleXValidatorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXValidatorExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXValidatorExpression15209); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXValidatorExpression"


    // $ANTLR start "ruleXValidatorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6946:1: ruleXValidatorExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleValidatorDef ) ) ) ) ;
    public final EObject ruleXValidatorExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6949:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleValidatorDef ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6950:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleValidatorDef ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6950:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleValidatorDef ) ) ) )
            int alt147=2;
            int LA147_0 = input.LA(1);

            if ( (LA147_0==RULE_ID) ) {
                alt147=1;
            }
            else if ( (LA147_0==80) ) {
                alt147=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 147, 0, input);

                throw nvae;
            }
            switch (alt147) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6950:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6950:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6951:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6951:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6952:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXValidatorExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXValidatorExpressionAccess().getReferenceValidatorDefCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXValidatorExpression15257);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6966:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleValidatorDef ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6966:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleValidatorDef ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6966:7: ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleValidatorDef ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6966:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6967:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6967:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6968:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXValidatorExpression15282); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXValidatorExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXValidatorExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6981:2: ( (lv_definition_2_0= ruleValidatorDef ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6982:1: (lv_definition_2_0= ruleValidatorDef )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6982:1: (lv_definition_2_0= ruleValidatorDef )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:6983:3: lv_definition_2_0= ruleValidatorDef
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXValidatorExpressionAccess().getDefinitionValidatorDefParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidatorDef_in_ruleXValidatorExpression15316);
                    lv_definition_2_0=ruleValidatorDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXValidatorExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_2_0, 
                              		"ValidatorDef");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXValidatorExpression"


    // $ANTLR start "entryRuleXLocatorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7007:1: entryRuleXLocatorExpression returns [EObject current=null] : iv_ruleXLocatorExpression= ruleXLocatorExpression EOF ;
    public final EObject entryRuleXLocatorExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXLocatorExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7008:2: (iv_ruleXLocatorExpression= ruleXLocatorExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7009:2: iv_ruleXLocatorExpression= ruleXLocatorExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXLocatorExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXLocatorExpression_in_entryRuleXLocatorExpression15353);
            iv_ruleXLocatorExpression=ruleXLocatorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXLocatorExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXLocatorExpression15363); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXLocatorExpression"


    // $ANTLR start "ruleXLocatorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7016:1: ruleXLocatorExpression returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorLocatorDef ) ) ) ) ;
    public final EObject ruleXLocatorExpression() throws RecognitionException {
        EObject current = null;

        Token lv_newInstance_1_0=null;
        EObject lv_definition_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7019:28: ( ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorLocatorDef ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7020:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorLocatorDef ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7020:1: ( ( ( ruleQualifiedName ) ) | ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorLocatorDef ) ) ) )
            int alt148=2;
            int LA148_0 = input.LA(1);

            if ( (LA148_0==RULE_ID) ) {
                alt148=1;
            }
            else if ( (LA148_0==80) ) {
                alt148=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 148, 0, input);

                throw nvae;
            }
            switch (alt148) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7020:2: ( ( ruleQualifiedName ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7020:2: ( ( ruleQualifiedName ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7021:1: ( ruleQualifiedName )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7021:1: ( ruleQualifiedName )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7022:3: ruleQualifiedName
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXLocatorExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXLocatorExpressionAccess().getReferenceDecoratorLocatorDefCrossReference_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXLocatorExpression15411);
                    ruleQualifiedName();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7036:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorLocatorDef ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7036:6: ( ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorLocatorDef ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7036:7: ( (lv_newInstance_1_0= 'new' ) ) ( (lv_definition_2_0= ruleDecoratorLocatorDef ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7036:7: ( (lv_newInstance_1_0= 'new' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7037:1: (lv_newInstance_1_0= 'new' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7037:1: (lv_newInstance_1_0= 'new' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7038:3: lv_newInstance_1_0= 'new'
                    {
                    lv_newInstance_1_0=(Token)match(input,80,FOLLOW_80_in_ruleXLocatorExpression15436); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_newInstance_1_0, grammarAccess.getXLocatorExpressionAccess().getNewInstanceNewKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXLocatorExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "newInstance", true, "new");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7051:2: ( (lv_definition_2_0= ruleDecoratorLocatorDef ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7052:1: (lv_definition_2_0= ruleDecoratorLocatorDef )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7052:1: (lv_definition_2_0= ruleDecoratorLocatorDef )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7053:3: lv_definition_2_0= ruleDecoratorLocatorDef
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXLocatorExpressionAccess().getDefinitionDecoratorLocatorDefParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDecoratorLocatorDef_in_ruleXLocatorExpression15470);
                    lv_definition_2_0=ruleDecoratorLocatorDef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXLocatorExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"definition",
                              		lv_definition_2_0, 
                              		"DecoratorLocatorDef");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXLocatorExpression"


    // $ANTLR start "entryRuleQualifiedNameWildCard"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7077:1: entryRuleQualifiedNameWildCard returns [String current=null] : iv_ruleQualifiedNameWildCard= ruleQualifiedNameWildCard EOF ;
    public final String entryRuleQualifiedNameWildCard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWildCard = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7078:2: (iv_ruleQualifiedNameWildCard= ruleQualifiedNameWildCard EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7079:2: iv_ruleQualifiedNameWildCard= ruleQualifiedNameWildCard EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameWildCardRule()); 
            }
            pushFollow(FOLLOW_ruleQualifiedNameWildCard_in_entryRuleQualifiedNameWildCard15508);
            iv_ruleQualifiedNameWildCard=ruleQualifiedNameWildCard();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedNameWildCard.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWildCard15519); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedNameWildCard"


    // $ANTLR start "ruleQualifiedNameWildCard"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7086:1: ruleQualifiedNameWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWildCard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7089:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7090:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7090:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7091:5: this_QualifiedName_0= ruleQualifiedName (kw= '.*' )?
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getQualifiedNameWildCardAccess().getQualifiedNameParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWildCard15566);
            this_QualifiedName_0=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_QualifiedName_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7101:1: (kw= '.*' )?
            int alt149=2;
            int LA149_0 = input.LA(1);

            if ( (LA149_0==81) ) {
                alt149=1;
            }
            switch (alt149) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7102:2: kw= '.*'
                    {
                    kw=(Token)match(input,81,FOLLOW_81_in_ruleQualifiedNameWildCard15585); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getQualifiedNameWildCardAccess().getFullStopAsteriskKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedNameWildCard"


    // $ANTLR start "entryRuleXExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7115:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
    public final EObject entryRuleXExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7116:2: (iv_ruleXExpression= ruleXExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7117:2: iv_ruleXExpression= ruleXExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression15627);
            iv_ruleXExpression=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression15637); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXExpression"


    // $ANTLR start "ruleXExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7124:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
    public final EObject ruleXExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAssignment_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7127:28: (this_XAssignment_0= ruleXAssignment )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7129:5: this_XAssignment_0= ruleXAssignment
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression15683);
            this_XAssignment_0=ruleXAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAssignment_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXExpression"


    // $ANTLR start "entryRuleXAssignment"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7145:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
    public final EObject entryRuleXAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAssignment = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7146:2: (iv_ruleXAssignment= ruleXAssignment EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7147:2: iv_ruleXAssignment= ruleXAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment15717);
            iv_ruleXAssignment=ruleXAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment15727); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAssignment"


    // $ANTLR start "ruleXAssignment"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7154:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
    public final EObject ruleXAssignment() throws RecognitionException {
        EObject current = null;

        EObject lv_value_3_0 = null;

        EObject this_XOrExpression_4 = null;

        EObject lv_rightOperand_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7157:28: ( ( ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7158:1: ( ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7158:1: ( ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
            int alt151=2;
            int LA151_0 = input.LA(1);

            if ( (LA151_0==RULE_ID) ) {
                int LA151_1 = input.LA(2);

                if ( (LA151_1==EOF||(LA151_1>=RULE_STRING && LA151_1<=RULE_INT)||(LA151_1>=12 && LA151_1<=14)||LA151_1==19||LA151_1==21||LA151_1==23||LA151_1==28||(LA151_1>=30 && LA151_1<=34)||(LA151_1>=36 && LA151_1<=38)||LA151_1==47||LA151_1==49||LA151_1==51||LA151_1==53||(LA151_1>=60 && LA151_1<=61)||(LA151_1>=66 && LA151_1<=67)||(LA151_1>=69 && LA151_1<=70)||(LA151_1>=72 && LA151_1<=74)||LA151_1==80||(LA151_1>=82 && LA151_1<=104)||(LA151_1>=106 && LA151_1<=128)) ) {
                    alt151=2;
                }
                else if ( (LA151_1==17) ) {
                    alt151=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 151, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA151_0==RULE_STRING||LA151_0==RULE_INT||LA151_0==13||LA151_0==19||LA151_0==36||LA151_0==80||LA151_0==91||(LA151_0>=94 && LA151_0<=95)||LA151_0==100||LA151_0==106||LA151_0==108||(LA151_0>=111 && LA151_0<=113)||LA151_0==117||(LA151_0>=119 && LA151_0<=125)) ) {
                alt151=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 151, 0, input);

                throw nvae;
            }
            switch (alt151) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7158:2: ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7158:2: ( () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7158:3: () ( ( ruleValidID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7158:3: ()
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7159:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7164:2: ( ( ruleValidID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7165:1: ( ruleValidID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7165:1: ( ruleValidID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7166:3: ruleValidID
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXAssignmentRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXAssignment15785);
                    ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXAssignment15801);
                    ruleOpSingleAssign();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7187:1: ( (lv_value_3_0= ruleXAssignment ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7188:1: (lv_value_3_0= ruleXAssignment )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7188:1: (lv_value_3_0= ruleXAssignment )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7189:3: lv_value_3_0= ruleXAssignment
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment15821);
                    lv_value_3_0=ruleXAssignment();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_3_0, 
                              		"XAssignment");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7206:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7206:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7207:5: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXOrExpression_in_ruleXAssignment15851);
                    this_XOrExpression_4=ruleXOrExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XOrExpression_4; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7215:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                    int alt150=2;
                    int LA150_0 = input.LA(1);

                    if ( (LA150_0==82) ) {
                        int LA150_1 = input.LA(2);

                        if ( (synpred18_InternalUnicornLanguageDefinition()) ) {
                            alt150=1;
                        }
                    }
                    switch (alt150) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7215:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7215:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7215:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7220:6: ( () ( ( ruleOpMultiAssign ) ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7220:7: () ( ( ruleOpMultiAssign ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7220:7: ()
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7221:5: 
                            {
                            if ( state.backtracking==0 ) {

                                      current = forceCreateModelElementAndSet(
                                          grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
                                          current);
                                  
                            }

                            }

                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7226:2: ( ( ruleOpMultiAssign ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7227:1: ( ruleOpMultiAssign )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7227:1: ( ruleOpMultiAssign )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7228:3: ruleOpMultiAssign
                            {
                            if ( state.backtracking==0 ) {

                              			if (current==null) {
                              	            current = createModelElement(grammarAccess.getXAssignmentRule());
                              	        }
                                      
                            }
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleOpMultiAssign_in_ruleXAssignment15904);
                            ruleOpMultiAssign();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {
                               
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }


                            }

                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7241:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7242:1: (lv_rightOperand_7_0= ruleXAssignment )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7242:1: (lv_rightOperand_7_0= ruleXAssignment )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7243:3: lv_rightOperand_7_0= ruleXAssignment
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment15927);
                            lv_rightOperand_7_0=ruleXAssignment();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"rightOperand",
                                      		lv_rightOperand_7_0, 
                                      		"XAssignment");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAssignment"


    // $ANTLR start "entryRuleOpSingleAssign"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7267:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
    public final String entryRuleOpSingleAssign() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpSingleAssign = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7268:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7269:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
            }
            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign15967);
            iv_ruleOpSingleAssign=ruleOpSingleAssign();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpSingleAssign.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign15978); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpSingleAssign"


    // $ANTLR start "ruleOpSingleAssign"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7276:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
    public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7279:28: (kw= '=' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7281:2: kw= '='
            {
            kw=(Token)match(input,17,FOLLOW_17_in_ruleOpSingleAssign16015); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpSingleAssign"


    // $ANTLR start "entryRuleOpMultiAssign"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7294:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
    public final String entryRuleOpMultiAssign() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpMultiAssign = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7295:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7296:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
            }
            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign16055);
            iv_ruleOpMultiAssign=ruleOpMultiAssign();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpMultiAssign.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign16066); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpMultiAssign"


    // $ANTLR start "ruleOpMultiAssign"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7303:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '+=' ;
    public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7306:28: (kw= '+=' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7308:2: kw= '+='
            {
            kw=(Token)match(input,82,FOLLOW_82_in_ruleOpMultiAssign16103); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpMultiAssign"


    // $ANTLR start "entryRuleXOrExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7321:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
    public final EObject entryRuleXOrExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXOrExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7322:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7323:2: iv_ruleXOrExpression= ruleXOrExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXOrExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression16142);
            iv_ruleXOrExpression=ruleXOrExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXOrExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression16152); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXOrExpression"


    // $ANTLR start "ruleXOrExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7330:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
    public final EObject ruleXOrExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAndExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7333:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7334:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7334:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7335:5: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression16199);
            this_XAndExpression_0=ruleXAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAndExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7343:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
            loop152:
            do {
                int alt152=2;
                int LA152_0 = input.LA(1);

                if ( (LA152_0==83) ) {
                    int LA152_2 = input.LA(2);

                    if ( (synpred19_InternalUnicornLanguageDefinition()) ) {
                        alt152=1;
                    }


                }


                switch (alt152) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7343:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7343:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7343:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7348:6: ( () ( ( ruleOpOr ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7348:7: () ( ( ruleOpOr ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7348:7: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7349:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7354:2: ( ( ruleOpOr ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7355:1: ( ruleOpOr )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7355:1: ( ruleOpOr )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7356:3: ruleOpOr
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXOrExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpOr_in_ruleXOrExpression16252);
            	    ruleOpOr();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7369:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7370:1: (lv_rightOperand_3_0= ruleXAndExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7370:1: (lv_rightOperand_3_0= ruleXAndExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7371:3: lv_rightOperand_3_0= ruleXAndExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression16275);
            	    lv_rightOperand_3_0=ruleXAndExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XAndExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop152;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXOrExpression"


    // $ANTLR start "entryRuleOpOr"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7395:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
    public final String entryRuleOpOr() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpOr = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7396:2: (iv_ruleOpOr= ruleOpOr EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7397:2: iv_ruleOpOr= ruleOpOr EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpOrRule()); 
            }
            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr16314);
            iv_ruleOpOr=ruleOpOr();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpOr.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr16325); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpOr"


    // $ANTLR start "ruleOpOr"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7404:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
    public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7407:28: (kw= '||' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7409:2: kw= '||'
            {
            kw=(Token)match(input,83,FOLLOW_83_in_ruleOpOr16362); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpOr"


    // $ANTLR start "entryRuleXAndExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7422:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
    public final EObject entryRuleXAndExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAndExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7423:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7424:2: iv_ruleXAndExpression= ruleXAndExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression16401);
            iv_ruleXAndExpression=ruleXAndExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAndExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression16411); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAndExpression"


    // $ANTLR start "ruleXAndExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7431:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
    public final EObject ruleXAndExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XEqualityExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7434:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7435:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7435:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7436:5: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression16458);
            this_XEqualityExpression_0=ruleXEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XEqualityExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7444:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
            loop153:
            do {
                int alt153=2;
                int LA153_0 = input.LA(1);

                if ( (LA153_0==84) ) {
                    int LA153_2 = input.LA(2);

                    if ( (synpred20_InternalUnicornLanguageDefinition()) ) {
                        alt153=1;
                    }


                }


                switch (alt153) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7444:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7444:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7444:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7449:6: ( () ( ( ruleOpAnd ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7449:7: () ( ( ruleOpAnd ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7449:7: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7450:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7455:2: ( ( ruleOpAnd ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7456:1: ( ruleOpAnd )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7456:1: ( ruleOpAnd )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7457:3: ruleOpAnd
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXAndExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpAnd_in_ruleXAndExpression16511);
            	    ruleOpAnd();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7470:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7471:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7471:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7472:3: lv_rightOperand_3_0= ruleXEqualityExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression16534);
            	    lv_rightOperand_3_0=ruleXEqualityExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XEqualityExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop153;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAndExpression"


    // $ANTLR start "entryRuleOpAnd"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7496:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
    public final String entryRuleOpAnd() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpAnd = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7497:2: (iv_ruleOpAnd= ruleOpAnd EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7498:2: iv_ruleOpAnd= ruleOpAnd EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpAndRule()); 
            }
            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd16573);
            iv_ruleOpAnd=ruleOpAnd();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpAnd.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd16584); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpAnd"


    // $ANTLR start "ruleOpAnd"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7505:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7508:28: (kw= '&&' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7510:2: kw= '&&'
            {
            kw=(Token)match(input,84,FOLLOW_84_in_ruleOpAnd16621); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpAnd"


    // $ANTLR start "entryRuleXEqualityExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7523:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXEqualityExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7524:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7525:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression16660);
            iv_ruleXEqualityExpression=ruleXEqualityExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXEqualityExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression16670); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXEqualityExpression"


    // $ANTLR start "ruleXEqualityExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7532:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
    public final EObject ruleXEqualityExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XRelationalExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7535:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7536:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7536:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7537:5: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression16717);
            this_XRelationalExpression_0=ruleXRelationalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XRelationalExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7545:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
            loop154:
            do {
                int alt154=2;
                int LA154_0 = input.LA(1);

                if ( (LA154_0==85) ) {
                    int LA154_2 = input.LA(2);

                    if ( (synpred21_InternalUnicornLanguageDefinition()) ) {
                        alt154=1;
                    }


                }
                else if ( (LA154_0==86) ) {
                    int LA154_3 = input.LA(2);

                    if ( (synpred21_InternalUnicornLanguageDefinition()) ) {
                        alt154=1;
                    }


                }


                switch (alt154) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7545:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7545:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7545:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7550:6: ( () ( ( ruleOpEquality ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7550:7: () ( ( ruleOpEquality ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7550:7: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7551:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7556:2: ( ( ruleOpEquality ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7557:1: ( ruleOpEquality )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7557:1: ( ruleOpEquality )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7558:3: ruleOpEquality
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXEqualityExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpEquality_in_ruleXEqualityExpression16770);
            	    ruleOpEquality();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7571:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7572:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7572:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7573:3: lv_rightOperand_3_0= ruleXRelationalExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression16793);
            	    lv_rightOperand_3_0=ruleXRelationalExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XRelationalExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop154;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXEqualityExpression"


    // $ANTLR start "entryRuleOpEquality"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7597:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
    public final String entryRuleOpEquality() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpEquality = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7598:2: (iv_ruleOpEquality= ruleOpEquality EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7599:2: iv_ruleOpEquality= ruleOpEquality EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpEqualityRule()); 
            }
            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality16832);
            iv_ruleOpEquality=ruleOpEquality();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpEquality.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality16843); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpEquality"


    // $ANTLR start "ruleOpEquality"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7606:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' ) ;
    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7609:28: ( (kw= '==' | kw= '!=' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7610:1: (kw= '==' | kw= '!=' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7610:1: (kw= '==' | kw= '!=' )
            int alt155=2;
            int LA155_0 = input.LA(1);

            if ( (LA155_0==85) ) {
                alt155=1;
            }
            else if ( (LA155_0==86) ) {
                alt155=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 155, 0, input);

                throw nvae;
            }
            switch (alt155) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7611:2: kw= '=='
                    {
                    kw=(Token)match(input,85,FOLLOW_85_in_ruleOpEquality16881); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7618:2: kw= '!='
                    {
                    kw=(Token)match(input,86,FOLLOW_86_in_ruleOpEquality16900); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpEquality"


    // $ANTLR start "entryRuleXRelationalExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7631:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXRelationalExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7632:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7633:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression16940);
            iv_ruleXRelationalExpression=ruleXRelationalExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXRelationalExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression16950); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXRelationalExpression"


    // $ANTLR start "ruleXRelationalExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7640:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
    public final EObject ruleXRelationalExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XOtherOperatorExpression_0 = null;

        EObject lv_rightOperand_6_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7643:28: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7644:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7644:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7645:5: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression16997);
            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XOtherOperatorExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
            loop156:
            do {
                int alt156=3;
                switch ( input.LA(1) ) {
                case 87:
                    {
                    int LA156_2 = input.LA(2);

                    if ( (synpred22_InternalUnicornLanguageDefinition()) ) {
                        alt156=1;
                    }


                    }
                    break;
                case 88:
                    {
                    int LA156_3 = input.LA(2);

                    if ( (synpred23_InternalUnicornLanguageDefinition()) ) {
                        alt156=2;
                    }


                    }
                    break;
                case 89:
                    {
                    int LA156_4 = input.LA(2);

                    if ( (synpred23_InternalUnicornLanguageDefinition()) ) {
                        alt156=2;
                    }


                    }
                    break;
                case 90:
                    {
                    int LA156_5 = input.LA(2);

                    if ( (synpred23_InternalUnicornLanguageDefinition()) ) {
                        alt156=2;
                    }


                    }
                    break;
                case 91:
                    {
                    int LA156_6 = input.LA(2);

                    if ( (synpred23_InternalUnicornLanguageDefinition()) ) {
                        alt156=2;
                    }


                    }
                    break;

                }

                switch (alt156) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( ( ruleQualifiedName ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7655:5: ( () otherlv_2= 'instanceof' )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7655:6: () otherlv_2= 'instanceof'
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7655:6: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7656:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,87,FOLLOW_87_in_ruleXRelationalExpression17033); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
            	          
            	    }

            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7665:3: ( ( ruleQualifiedName ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7666:1: ( ruleQualifiedName )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7666:1: ( ruleQualifiedName )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7667:3: ruleQualifiedName
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXRelationalExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeCrossReference_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleQualifiedName_in_ruleXRelationalExpression17058);
            	    ruleQualifiedName();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7686:6: ( () ( ( ruleOpCompare ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7686:7: () ( ( ruleOpCompare ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7686:7: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7687:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7692:2: ( ( ruleOpCompare ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7693:1: ( ruleOpCompare )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7693:1: ( ruleOpCompare )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7694:3: ruleOpCompare
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXRelationalExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpCompare_in_ruleXRelationalExpression17119);
            	    ruleOpCompare();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7707:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7708:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7708:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7709:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression17142);
            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_6_0, 
            	              		"XOtherOperatorExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop156;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXRelationalExpression"


    // $ANTLR start "entryRuleOpCompare"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7733:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
    public final String entryRuleOpCompare() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpCompare = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7734:2: (iv_ruleOpCompare= ruleOpCompare EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7735:2: iv_ruleOpCompare= ruleOpCompare EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpCompareRule()); 
            }
            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare17182);
            iv_ruleOpCompare=ruleOpCompare();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpCompare.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare17193); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpCompare"


    // $ANTLR start "ruleOpCompare"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7742:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' ) ;
    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7745:28: ( (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7746:1: (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7746:1: (kw= '>=' | kw= '<=' | kw= '>' | kw= '<' )
            int alt157=4;
            switch ( input.LA(1) ) {
            case 88:
                {
                alt157=1;
                }
                break;
            case 89:
                {
                alt157=2;
                }
                break;
            case 90:
                {
                alt157=3;
                }
                break;
            case 91:
                {
                alt157=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 157, 0, input);

                throw nvae;
            }

            switch (alt157) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7747:2: kw= '>='
                    {
                    kw=(Token)match(input,88,FOLLOW_88_in_ruleOpCompare17231); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7754:2: kw= '<='
                    {
                    kw=(Token)match(input,89,FOLLOW_89_in_ruleOpCompare17250); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignEqualsSignKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7761:2: kw= '>'
                    {
                    kw=(Token)match(input,90,FOLLOW_90_in_ruleOpCompare17269); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7768:2: kw= '<'
                    {
                    kw=(Token)match(input,91,FOLLOW_91_in_ruleOpCompare17288); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpCompare"


    // $ANTLR start "entryRuleXOtherOperatorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7781:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXOtherOperatorExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7782:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7783:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression17328);
            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXOtherOperatorExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression17338); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXOtherOperatorExpression"


    // $ANTLR start "ruleXOtherOperatorExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7790:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
    public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XAdditiveExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7793:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7794:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7794:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7795:5: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression17385);
            this_XAdditiveExpression_0=ruleXAdditiveExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XAdditiveExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7803:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
            loop158:
            do {
                int alt158=2;
                int LA158_0 = input.LA(1);

                if ( (LA158_0==92) ) {
                    int LA158_2 = input.LA(2);

                    if ( (synpred24_InternalUnicornLanguageDefinition()) ) {
                        alt158=1;
                    }


                }
                else if ( (LA158_0==93) ) {
                    int LA158_3 = input.LA(2);

                    if ( (synpred24_InternalUnicornLanguageDefinition()) ) {
                        alt158=1;
                    }


                }


                switch (alt158) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7803:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7803:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7803:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7808:6: ( () ( ( ruleOpOther ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7808:7: () ( ( ruleOpOther ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7808:7: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7809:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7814:2: ( ( ruleOpOther ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7815:1: ( ruleOpOther )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7815:1: ( ruleOpOther )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7816:3: ruleOpOther
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression17438);
            	    ruleOpOther();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7829:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7830:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7830:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7831:3: lv_rightOperand_3_0= ruleXAdditiveExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression17461);
            	    lv_rightOperand_3_0=ruleXAdditiveExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XAdditiveExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop158;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXOtherOperatorExpression"


    // $ANTLR start "entryRuleOpOther"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7855:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
    public final String entryRuleOpOther() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpOther = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7856:2: (iv_ruleOpOther= ruleOpOther EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7857:2: iv_ruleOpOther= ruleOpOther EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpOtherRule()); 
            }
            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther17500);
            iv_ruleOpOther=ruleOpOther();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpOther.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther17511); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpOther"


    // $ANTLR start "ruleOpOther"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7864:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..' ) ;
    public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7867:28: ( (kw= '->' | kw= '..' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7868:1: (kw= '->' | kw= '..' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7868:1: (kw= '->' | kw= '..' )
            int alt159=2;
            int LA159_0 = input.LA(1);

            if ( (LA159_0==92) ) {
                alt159=1;
            }
            else if ( (LA159_0==93) ) {
                alt159=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 159, 0, input);

                throw nvae;
            }
            switch (alt159) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7869:2: kw= '->'
                    {
                    kw=(Token)match(input,92,FOLLOW_92_in_ruleOpOther17549); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7876:2: kw= '..'
                    {
                    kw=(Token)match(input,93,FOLLOW_93_in_ruleOpOther17568); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpOther"


    // $ANTLR start "entryRuleXAdditiveExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7889:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
    public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXAdditiveExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7890:2: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7891:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression17608);
            iv_ruleXAdditiveExpression=ruleXAdditiveExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXAdditiveExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression17618); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXAdditiveExpression"


    // $ANTLR start "ruleXAdditiveExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7898:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
    public final EObject ruleXAdditiveExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XMultiplicativeExpression_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7901:28: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7902:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7902:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7903:5: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression17665);
            this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XMultiplicativeExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7911:1: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
            loop160:
            do {
                int alt160=2;
                int LA160_0 = input.LA(1);

                if ( (LA160_0==94) ) {
                    int LA160_2 = input.LA(2);

                    if ( (synpred25_InternalUnicornLanguageDefinition()) ) {
                        alt160=1;
                    }


                }
                else if ( (LA160_0==95) ) {
                    int LA160_3 = input.LA(2);

                    if ( (synpred25_InternalUnicornLanguageDefinition()) ) {
                        alt160=1;
                    }


                }


                switch (alt160) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7911:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7911:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7911:3: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7916:6: ( () ( ( ruleOpAdd ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7916:7: () ( ( ruleOpAdd ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7916:7: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7917:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7922:2: ( ( ruleOpAdd ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7923:1: ( ruleOpAdd )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7923:1: ( ruleOpAdd )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7924:3: ruleOpAdd
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression17718);
            	    ruleOpAdd();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7937:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7938:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7938:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7939:3: lv_rightOperand_3_0= ruleXMultiplicativeExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression17741);
            	    lv_rightOperand_3_0=ruleXMultiplicativeExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XMultiplicativeExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop160;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXAdditiveExpression"


    // $ANTLR start "entryRuleOpAdd"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7963:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
    public final String entryRuleOpAdd() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpAdd = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7964:2: (iv_ruleOpAdd= ruleOpAdd EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7965:2: iv_ruleOpAdd= ruleOpAdd EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpAddRule()); 
            }
            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd17780);
            iv_ruleOpAdd=ruleOpAdd();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpAdd.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd17791); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpAdd"


    // $ANTLR start "ruleOpAdd"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7972:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
    public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7975:28: ( (kw= '+' | kw= '-' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7976:1: (kw= '+' | kw= '-' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7976:1: (kw= '+' | kw= '-' )
            int alt161=2;
            int LA161_0 = input.LA(1);

            if ( (LA161_0==94) ) {
                alt161=1;
            }
            else if ( (LA161_0==95) ) {
                alt161=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 161, 0, input);

                throw nvae;
            }
            switch (alt161) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7977:2: kw= '+'
                    {
                    kw=(Token)match(input,94,FOLLOW_94_in_ruleOpAdd17829); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7984:2: kw= '-'
                    {
                    kw=(Token)match(input,95,FOLLOW_95_in_ruleOpAdd17848); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpAdd"


    // $ANTLR start "entryRuleXMultiplicativeExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7997:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
    public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXMultiplicativeExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7998:2: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7999:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression17888);
            iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXMultiplicativeExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression17898); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXMultiplicativeExpression"


    // $ANTLR start "ruleXMultiplicativeExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8006:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
    public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XUnaryOperation_0 = null;

        EObject lv_rightOperand_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8009:28: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8010:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8010:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8011:5: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression17945);
            this_XUnaryOperation_0=ruleXUnaryOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XUnaryOperation_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8019:1: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
            loop162:
            do {
                int alt162=2;
                switch ( input.LA(1) ) {
                case 96:
                    {
                    int LA162_2 = input.LA(2);

                    if ( (synpred26_InternalUnicornLanguageDefinition()) ) {
                        alt162=1;
                    }


                    }
                    break;
                case 97:
                    {
                    int LA162_3 = input.LA(2);

                    if ( (synpred26_InternalUnicornLanguageDefinition()) ) {
                        alt162=1;
                    }


                    }
                    break;
                case 98:
                    {
                    int LA162_4 = input.LA(2);

                    if ( (synpred26_InternalUnicornLanguageDefinition()) ) {
                        alt162=1;
                    }


                    }
                    break;
                case 99:
                    {
                    int LA162_5 = input.LA(2);

                    if ( (synpred26_InternalUnicornLanguageDefinition()) ) {
                        alt162=1;
                    }


                    }
                    break;

                }

                switch (alt162) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8019:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8019:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8019:3: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8024:6: ( () ( ( ruleOpMulti ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8024:7: () ( ( ruleOpMulti ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8024:7: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8025:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8030:2: ( ( ruleOpMulti ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8031:1: ( ruleOpMulti )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8031:1: ( ruleOpMulti )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8032:3: ruleOpMulti
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression17998);
            	    ruleOpMulti();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8045:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8046:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8046:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8047:3: lv_rightOperand_3_0= ruleXUnaryOperation
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression18021);
            	    lv_rightOperand_3_0=ruleXUnaryOperation();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"rightOperand",
            	              		lv_rightOperand_3_0, 
            	              		"XUnaryOperation");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop162;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXMultiplicativeExpression"


    // $ANTLR start "entryRuleOpMulti"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8071:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
    public final String entryRuleOpMulti() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpMulti = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8072:2: (iv_ruleOpMulti= ruleOpMulti EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8073:2: iv_ruleOpMulti= ruleOpMulti EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpMultiRule()); 
            }
            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti18060);
            iv_ruleOpMulti=ruleOpMulti();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpMulti.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti18071); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpMulti"


    // $ANTLR start "ruleOpMulti"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8080:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
    public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8083:28: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8084:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8084:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
            int alt163=4;
            switch ( input.LA(1) ) {
            case 96:
                {
                alt163=1;
                }
                break;
            case 97:
                {
                alt163=2;
                }
                break;
            case 98:
                {
                alt163=3;
                }
                break;
            case 99:
                {
                alt163=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 163, 0, input);

                throw nvae;
            }

            switch (alt163) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8085:2: kw= '*'
                    {
                    kw=(Token)match(input,96,FOLLOW_96_in_ruleOpMulti18109); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8092:2: kw= '**'
                    {
                    kw=(Token)match(input,97,FOLLOW_97_in_ruleOpMulti18128); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8099:2: kw= '/'
                    {
                    kw=(Token)match(input,98,FOLLOW_98_in_ruleOpMulti18147); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8106:2: kw= '%'
                    {
                    kw=(Token)match(input,99,FOLLOW_99_in_ruleOpMulti18166); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpMulti"


    // $ANTLR start "entryRuleXUnaryOperation"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8119:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
    public final EObject entryRuleXUnaryOperation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXUnaryOperation = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8120:2: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8121:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
            }
            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation18206);
            iv_ruleXUnaryOperation=ruleXUnaryOperation();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXUnaryOperation; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation18216); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXUnaryOperation"


    // $ANTLR start "ruleXUnaryOperation"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8128:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
    public final EObject ruleXUnaryOperation() throws RecognitionException {
        EObject current = null;

        EObject lv_operand_2_0 = null;

        EObject this_XCastedExpression_3 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8131:28: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8132:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8132:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
            int alt164=2;
            int LA164_0 = input.LA(1);

            if ( ((LA164_0>=94 && LA164_0<=95)||LA164_0==100) ) {
                alt164=1;
            }
            else if ( ((LA164_0>=RULE_STRING && LA164_0<=RULE_INT)||LA164_0==13||LA164_0==19||LA164_0==36||LA164_0==80||LA164_0==91||LA164_0==106||LA164_0==108||(LA164_0>=111 && LA164_0<=113)||LA164_0==117||(LA164_0>=119 && LA164_0<=125)) ) {
                alt164=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 164, 0, input);

                throw nvae;
            }
            switch (alt164) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8132:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8132:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8132:3: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXCastedExpression ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8132:3: ()
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8133:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8138:2: ( ( ruleOpUnary ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8139:1: ( ruleOpUnary )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8139:1: ( ruleOpUnary )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8140:3: ruleOpUnary
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXUnaryOperationRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleOpUnary_in_ruleXUnaryOperation18274);
                    ruleOpUnary();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8153:2: ( (lv_operand_2_0= ruleXCastedExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8154:1: (lv_operand_2_0= ruleXCastedExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8154:1: (lv_operand_2_0= ruleXCastedExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8155:3: lv_operand_2_0= ruleXCastedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXCastedExpressionParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation18295);
                    lv_operand_2_0=ruleXCastedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
                      	        }
                             		set(
                             			current, 
                             			"operand",
                              		lv_operand_2_0, 
                              		"XCastedExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8173:5: this_XCastedExpression_3= ruleXCastedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation18324);
                    this_XCastedExpression_3=ruleXCastedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XCastedExpression_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXUnaryOperation"


    // $ANTLR start "entryRuleOpUnary"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8189:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
    public final String entryRuleOpUnary() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpUnary = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8190:2: (iv_ruleOpUnary= ruleOpUnary EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8191:2: iv_ruleOpUnary= ruleOpUnary EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpUnaryRule()); 
            }
            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary18360);
            iv_ruleOpUnary=ruleOpUnary();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpUnary.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary18371); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpUnary"


    // $ANTLR start "ruleOpUnary"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8198:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
    public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8201:28: ( (kw= '!' | kw= '-' | kw= '+' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8202:1: (kw= '!' | kw= '-' | kw= '+' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8202:1: (kw= '!' | kw= '-' | kw= '+' )
            int alt165=3;
            switch ( input.LA(1) ) {
            case 100:
                {
                alt165=1;
                }
                break;
            case 95:
                {
                alt165=2;
                }
                break;
            case 94:
                {
                alt165=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 165, 0, input);

                throw nvae;
            }

            switch (alt165) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8203:2: kw= '!'
                    {
                    kw=(Token)match(input,100,FOLLOW_100_in_ruleOpUnary18409); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8210:2: kw= '-'
                    {
                    kw=(Token)match(input,95,FOLLOW_95_in_ruleOpUnary18428); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8217:2: kw= '+'
                    {
                    kw=(Token)match(input,94,FOLLOW_94_in_ruleOpUnary18447); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpUnary"


    // $ANTLR start "entryRuleXCastedExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8230:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
    public final EObject entryRuleXCastedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCastedExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8231:2: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8232:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression18487);
            iv_ruleXCastedExpression=ruleXCastedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCastedExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression18497); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCastedExpression"


    // $ANTLR start "ruleXCastedExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8239:1: ruleXCastedExpression returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
    public final EObject ruleXCastedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        EObject this_XMemberFeatureCall_0 = null;

        EObject lv_type_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8242:28: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8243:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8243:1: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8244:5: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXMemberFeatureCallParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_ruleXCastedExpression18544);
            this_XMemberFeatureCall_0=ruleXMemberFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XMemberFeatureCall_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8252:1: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
            loop166:
            do {
                int alt166=2;
                int LA166_0 = input.LA(1);

                if ( (LA166_0==101) ) {
                    int LA166_2 = input.LA(2);

                    if ( (synpred27_InternalUnicornLanguageDefinition()) ) {
                        alt166=1;
                    }


                }


                switch (alt166) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8252:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8252:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8252:3: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8254:5: ( () otherlv_2= 'as' )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8254:6: () otherlv_2= 'as'
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8254:6: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8255:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,101,FOLLOW_101_in_ruleXCastedExpression18579); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
            	          
            	    }

            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8264:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8265:1: (lv_type_3_0= ruleJvmTypeReference )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8265:1: (lv_type_3_0= ruleJvmTypeReference )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8266:3: lv_type_3_0= ruleJvmTypeReference
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression18602);
            	    lv_type_3_0=ruleJvmTypeReference();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"type",
            	              		lv_type_3_0, 
            	              		"JvmTypeReference");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop166;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCastedExpression"


    // $ANTLR start "entryRuleXMemberFeatureCall"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8290:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
    public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXMemberFeatureCall = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8291:2: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8292:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); 
            }
            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall18640);
            iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXMemberFeatureCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXMemberFeatureCall18650); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXMemberFeatureCall"


    // $ANTLR start "ruleXMemberFeatureCall"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8299:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ) )* ) ;
    public final EObject ruleXMemberFeatureCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_7=null;
        Token lv_nullSafe_8_0=null;
        Token lv_spreading_9_0=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token lv_explicitOperationCall_16_0=null;
        Token otherlv_19=null;
        Token otherlv_21=null;
        EObject this_XPrimaryExpression_0 = null;

        EObject lv_value_5_0 = null;

        EObject lv_typeArguments_11_0 = null;

        EObject lv_typeArguments_13_0 = null;

        EObject lv_memberCallArguments_17_0 = null;

        EObject lv_memberCallArguments_18_0 = null;

        EObject lv_memberCallArguments_20_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8302:28: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ) )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8303:1: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ) )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8303:1: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ) )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8304:5: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleXPrimaryExpression_in_ruleXMemberFeatureCall18697);
            this_XPrimaryExpression_0=ruleXPrimaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XPrimaryExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:1: ( ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? ) )*
            loop173:
            do {
                int alt173=3;
                switch ( input.LA(1) ) {
                case 102:
                    {
                    int LA173_2 = input.LA(2);

                    if ( (synpred28_InternalUnicornLanguageDefinition()) ) {
                        alt173=1;
                    }
                    else if ( (synpred29_InternalUnicornLanguageDefinition()) ) {
                        alt173=2;
                    }


                    }
                    break;
                case 103:
                    {
                    int LA173_3 = input.LA(2);

                    if ( (synpred29_InternalUnicornLanguageDefinition()) ) {
                        alt173=2;
                    }


                    }
                    break;
                case 104:
                    {
                    int LA173_4 = input.LA(2);

                    if ( (synpred29_InternalUnicornLanguageDefinition()) ) {
                        alt173=2;
                    }


                    }
                    break;

                }

                switch (alt173) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:2: ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:2: ( ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:3: ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) ) ( (lv_value_5_0= ruleXAssignment ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:3: ( ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:4: ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )=> ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8318:25: ( () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8318:26: () otherlv_2= '.' ( ( ruleValidID ) ) ruleOpSingleAssign
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8318:26: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8319:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    otherlv_2=(Token)match(input,102,FOLLOW_102_in_ruleXMemberFeatureCall18746); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1());
            	          
            	    }
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8328:1: ( ( ruleValidID ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8329:1: ( ruleValidID )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8329:1: ( ruleValidID )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8330:3: ruleValidID
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleXMemberFeatureCall18769);
            	    ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    if ( state.backtracking==0 ) {
            	       
            	              newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
            	          
            	    }
            	    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXMemberFeatureCall18785);
            	    ruleOpSingleAssign();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	              afterParserOrEnumRuleCall();
            	          
            	    }

            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8351:3: ( (lv_value_5_0= ruleXAssignment ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8352:1: (lv_value_5_0= ruleXAssignment )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8352:1: (lv_value_5_0= ruleXAssignment )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8353:3: lv_value_5_0= ruleXAssignment
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXAssignment_in_ruleXMemberFeatureCall18807);
            	    lv_value_5_0=ruleXAssignment();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"value",
            	              		lv_value_5_0, 
            	              		"XAssignment");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:6: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:6: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )? )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:7: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) ) (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )? ( ( ruleValidID ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )?
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:7: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:8: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )=> ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8386:7: ( () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8386:8: () (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8386:8: ()
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8387:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndSet(
            	                  grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8392:2: (otherlv_7= '.' | ( (lv_nullSafe_8_0= '?.' ) ) | ( (lv_spreading_9_0= '*.' ) ) )
            	    int alt167=3;
            	    switch ( input.LA(1) ) {
            	    case 102:
            	        {
            	        alt167=1;
            	        }
            	        break;
            	    case 103:
            	        {
            	        alt167=2;
            	        }
            	        break;
            	    case 104:
            	        {
            	        alt167=3;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 167, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt167) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8392:4: otherlv_7= '.'
            	            {
            	            otherlv_7=(Token)match(input,102,FOLLOW_102_in_ruleXMemberFeatureCall18893); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_7, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
            	                  
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8397:6: ( (lv_nullSafe_8_0= '?.' ) )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8397:6: ( (lv_nullSafe_8_0= '?.' ) )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8398:1: (lv_nullSafe_8_0= '?.' )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8398:1: (lv_nullSafe_8_0= '?.' )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8399:3: lv_nullSafe_8_0= '?.'
            	            {
            	            lv_nullSafe_8_0=(Token)match(input,103,FOLLOW_103_in_ruleXMemberFeatureCall18917); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_nullSafe_8_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		setWithLastConsumed(current, "nullSafe", true, "?.");
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;
            	        case 3 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8413:6: ( (lv_spreading_9_0= '*.' ) )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8413:6: ( (lv_spreading_9_0= '*.' ) )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8414:1: (lv_spreading_9_0= '*.' )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8414:1: (lv_spreading_9_0= '*.' )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8415:3: lv_spreading_9_0= '*.'
            	            {
            	            lv_spreading_9_0=(Token)match(input,104,FOLLOW_104_in_ruleXMemberFeatureCall18954); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_spreading_9_0, grammarAccess.getXMemberFeatureCallAccess().getSpreadingAsteriskFullStopKeyword_1_1_0_0_1_2_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		setWithLastConsumed(current, "spreading", true, "*.");
            	              	    
            	            }

            	            }


            	            }


            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8428:5: (otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>' )?
            	    int alt169=2;
            	    int LA169_0 = input.LA(1);

            	    if ( (LA169_0==91) ) {
            	        alt169=1;
            	    }
            	    switch (alt169) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8428:7: otherlv_10= '<' ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) ) (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )* otherlv_14= '>'
            	            {
            	            otherlv_10=(Token)match(input,91,FOLLOW_91_in_ruleXMemberFeatureCall18983); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_10, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
            	                  
            	            }
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8432:1: ( (lv_typeArguments_11_0= ruleJvmArgumentTypeReference ) )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8433:1: (lv_typeArguments_11_0= ruleJvmArgumentTypeReference )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8433:1: (lv_typeArguments_11_0= ruleJvmArgumentTypeReference )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8434:3: lv_typeArguments_11_0= ruleJvmArgumentTypeReference
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
            	              	    
            	            }
            	            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall19004);
            	            lv_typeArguments_11_0=ruleJvmArgumentTypeReference();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"typeArguments",
            	                      		lv_typeArguments_11_0, 
            	                      		"JvmArgumentTypeReference");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8450:2: (otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) ) )*
            	            loop168:
            	            do {
            	                int alt168=2;
            	                int LA168_0 = input.LA(1);

            	                if ( (LA168_0==37) ) {
            	                    alt168=1;
            	                }


            	                switch (alt168) {
            	            	case 1 :
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8450:4: otherlv_12= ',' ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) )
            	            	    {
            	            	    otherlv_12=(Token)match(input,37,FOLLOW_37_in_ruleXMemberFeatureCall19017); if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	          	newLeafNode(otherlv_12, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
            	            	          
            	            	    }
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8454:1: ( (lv_typeArguments_13_0= ruleJvmArgumentTypeReference ) )
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8455:1: (lv_typeArguments_13_0= ruleJvmArgumentTypeReference )
            	            	    {
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8455:1: (lv_typeArguments_13_0= ruleJvmArgumentTypeReference )
            	            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8456:3: lv_typeArguments_13_0= ruleJvmArgumentTypeReference
            	            	    {
            	            	    if ( state.backtracking==0 ) {
            	            	       
            	            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
            	            	      	    
            	            	    }
            	            	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall19038);
            	            	    lv_typeArguments_13_0=ruleJvmArgumentTypeReference();

            	            	    state._fsp--;
            	            	    if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	      	        if (current==null) {
            	            	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	            	      	        }
            	            	             		add(
            	            	             			current, 
            	            	             			"typeArguments",
            	            	              		lv_typeArguments_13_0, 
            	            	              		"JvmArgumentTypeReference");
            	            	      	        afterParserOrEnumRuleCall();
            	            	      	    
            	            	    }

            	            	    }


            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop168;
            	                }
            	            } while (true);

            	            otherlv_14=(Token)match(input,90,FOLLOW_90_in_ruleXMemberFeatureCall19052); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_14, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
            	                  
            	            }

            	            }
            	            break;

            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8476:3: ( ( ruleValidID ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8477:1: ( ruleValidID )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8477:1: ( ruleValidID )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8478:3: ruleValidID
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleXMemberFeatureCall19077);
            	    ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8491:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )?
            	    int alt172=2;
            	    alt172 = dfa172.predict(input);
            	    switch (alt172) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8491:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')'
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8491:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8491:4: ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' )
            	            {
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8498:1: (lv_explicitOperationCall_16_0= '(' )
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8499:3: lv_explicitOperationCall_16_0= '('
            	            {
            	            lv_explicitOperationCall_16_0=(Token)match(input,19,FOLLOW_19_in_ruleXMemberFeatureCall19111); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_explicitOperationCall_16_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
            	              	        }
            	                     		setWithLastConsumed(current, "explicitOperationCall", true, "(");
            	              	    
            	            }

            	            }


            	            }

            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8512:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )?
            	            int alt171=3;
            	            alt171 = dfa171.predict(input);
            	            switch (alt171) {
            	                case 1 :
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8512:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) )
            	                    {
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8512:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) )
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8512:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure )
            	                    {
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8524:1: (lv_memberCallArguments_17_0= ruleXShortClosure )
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8525:3: lv_memberCallArguments_17_0= ruleXShortClosure
            	                    {
            	                    if ( state.backtracking==0 ) {
            	                       
            	                      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
            	                      	    
            	                    }
            	                    pushFollow(FOLLOW_ruleXShortClosure_in_ruleXMemberFeatureCall19186);
            	                    lv_memberCallArguments_17_0=ruleXShortClosure();

            	                    state._fsp--;
            	                    if (state.failed) return current;
            	                    if ( state.backtracking==0 ) {

            	                      	        if (current==null) {
            	                      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	                      	        }
            	                             		add(
            	                             			current, 
            	                             			"memberCallArguments",
            	                              		lv_memberCallArguments_17_0, 
            	                              		"XShortClosure");
            	                      	        afterParserOrEnumRuleCall();
            	                      	    
            	                    }

            	                    }


            	                    }


            	                    }
            	                    break;
            	                case 2 :
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8542:6: ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* )
            	                    {
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8542:6: ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* )
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8542:7: ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )*
            	                    {
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8542:7: ( (lv_memberCallArguments_18_0= ruleXExpression ) )
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8543:1: (lv_memberCallArguments_18_0= ruleXExpression )
            	                    {
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8543:1: (lv_memberCallArguments_18_0= ruleXExpression )
            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8544:3: lv_memberCallArguments_18_0= ruleXExpression
            	                    {
            	                    if ( state.backtracking==0 ) {
            	                       
            	                      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
            	                      	    
            	                    }
            	                    pushFollow(FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall19214);
            	                    lv_memberCallArguments_18_0=ruleXExpression();

            	                    state._fsp--;
            	                    if (state.failed) return current;
            	                    if ( state.backtracking==0 ) {

            	                      	        if (current==null) {
            	                      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	                      	        }
            	                             		add(
            	                             			current, 
            	                             			"memberCallArguments",
            	                              		lv_memberCallArguments_18_0, 
            	                              		"XExpression");
            	                      	        afterParserOrEnumRuleCall();
            	                      	    
            	                    }

            	                    }


            	                    }

            	                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8560:2: (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )*
            	                    loop170:
            	                    do {
            	                        int alt170=2;
            	                        int LA170_0 = input.LA(1);

            	                        if ( (LA170_0==37) ) {
            	                            alt170=1;
            	                        }


            	                        switch (alt170) {
            	                    	case 1 :
            	                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8560:4: otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) )
            	                    	    {
            	                    	    otherlv_19=(Token)match(input,37,FOLLOW_37_in_ruleXMemberFeatureCall19227); if (state.failed) return current;
            	                    	    if ( state.backtracking==0 ) {

            	                    	          	newLeafNode(otherlv_19, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
            	                    	          
            	                    	    }
            	                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8564:1: ( (lv_memberCallArguments_20_0= ruleXExpression ) )
            	                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8565:1: (lv_memberCallArguments_20_0= ruleXExpression )
            	                    	    {
            	                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8565:1: (lv_memberCallArguments_20_0= ruleXExpression )
            	                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8566:3: lv_memberCallArguments_20_0= ruleXExpression
            	                    	    {
            	                    	    if ( state.backtracking==0 ) {
            	                    	       
            	                    	      	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
            	                    	      	    
            	                    	    }
            	                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall19248);
            	                    	    lv_memberCallArguments_20_0=ruleXExpression();

            	                    	    state._fsp--;
            	                    	    if (state.failed) return current;
            	                    	    if ( state.backtracking==0 ) {

            	                    	      	        if (current==null) {
            	                    	      	            current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
            	                    	      	        }
            	                    	             		add(
            	                    	             			current, 
            	                    	             			"memberCallArguments",
            	                    	              		lv_memberCallArguments_20_0, 
            	                    	              		"XExpression");
            	                    	      	        afterParserOrEnumRuleCall();
            	                    	      	    
            	                    	    }

            	                    	    }


            	                    	    }


            	                    	    }
            	                    	    break;

            	                    	default :
            	                    	    break loop170;
            	                        }
            	                    } while (true);


            	                    }


            	                    }
            	                    break;

            	            }

            	            otherlv_21=(Token)match(input,23,FOLLOW_23_in_ruleXMemberFeatureCall19265); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_21, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
            	                  
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop173;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXMemberFeatureCall"


    // $ANTLR start "entryRuleXPrimaryExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8594:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
    public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXPrimaryExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8595:2: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8596:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression19306);
            iv_ruleXPrimaryExpression=ruleXPrimaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXPrimaryExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXPrimaryExpression19316); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXPrimaryExpression"


    // $ANTLR start "ruleXPrimaryExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8603:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression ) ;
    public final EObject ruleXPrimaryExpression() throws RecognitionException {
        EObject current = null;

        EObject this_XConstructorCall_0 = null;

        EObject this_XBlockExpression_1 = null;

        EObject this_XSwitchExpression_2 = null;

        EObject this_XFeatureCall_3 = null;

        EObject this_XLiteral_4 = null;

        EObject this_XIfExpression_5 = null;

        EObject this_XForLoopExpression_6 = null;

        EObject this_XWhileExpression_7 = null;

        EObject this_XDoWhileExpression_8 = null;

        EObject this_XThrowExpression_9 = null;

        EObject this_XReturnExpression_10 = null;

        EObject this_XTryCatchFinallyExpression_11 = null;

        EObject this_XParenthesizedExpression_12 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8606:28: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8607:1: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8607:1: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | this_XFeatureCall_3= ruleXFeatureCall | this_XLiteral_4= ruleXLiteral | this_XIfExpression_5= ruleXIfExpression | this_XForLoopExpression_6= ruleXForLoopExpression | this_XWhileExpression_7= ruleXWhileExpression | this_XDoWhileExpression_8= ruleXDoWhileExpression | this_XThrowExpression_9= ruleXThrowExpression | this_XReturnExpression_10= ruleXReturnExpression | this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_12= ruleXParenthesizedExpression )
            int alt174=13;
            switch ( input.LA(1) ) {
            case 80:
                {
                alt174=1;
                }
                break;
            case 13:
                {
                alt174=2;
                }
                break;
            case 108:
                {
                alt174=3;
                }
                break;
            case RULE_ID:
            case 91:
            case 117:
                {
                alt174=4;
                }
                break;
            case RULE_STRING:
            case RULE_INT:
            case 36:
            case 119:
            case 120:
            case 121:
            case 122:
                {
                alt174=5;
                }
                break;
            case 106:
                {
                alt174=6;
                }
                break;
            case 111:
                {
                alt174=7;
                }
                break;
            case 112:
                {
                alt174=8;
                }
                break;
            case 113:
                {
                alt174=9;
                }
                break;
            case 123:
                {
                alt174=10;
                }
                break;
            case 124:
                {
                alt174=11;
                }
                break;
            case 125:
                {
                alt174=12;
                }
                break;
            case 19:
                {
                alt174=13;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 174, 0, input);

                throw nvae;
            }

            switch (alt174) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8608:5: this_XConstructorCall_0= ruleXConstructorCall
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXConstructorCall_in_ruleXPrimaryExpression19363);
                    this_XConstructorCall_0=ruleXConstructorCall();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XConstructorCall_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8618:5: this_XBlockExpression_1= ruleXBlockExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXBlockExpression_in_ruleXPrimaryExpression19390);
                    this_XBlockExpression_1=ruleXBlockExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XBlockExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8628:5: this_XSwitchExpression_2= ruleXSwitchExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXSwitchExpression_in_ruleXPrimaryExpression19417);
                    this_XSwitchExpression_2=ruleXSwitchExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XSwitchExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8638:5: this_XFeatureCall_3= ruleXFeatureCall
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXFeatureCall_in_ruleXPrimaryExpression19444);
                    this_XFeatureCall_3=ruleXFeatureCall();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XFeatureCall_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8648:5: this_XLiteral_4= ruleXLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXLiteral_in_ruleXPrimaryExpression19471);
                    this_XLiteral_4=ruleXLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XLiteral_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8658:5: this_XIfExpression_5= ruleXIfExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXIfExpression_in_ruleXPrimaryExpression19498);
                    this_XIfExpression_5=ruleXIfExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XIfExpression_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8668:5: this_XForLoopExpression_6= ruleXForLoopExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXForLoopExpression_in_ruleXPrimaryExpression19525);
                    this_XForLoopExpression_6=ruleXForLoopExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XForLoopExpression_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8678:5: this_XWhileExpression_7= ruleXWhileExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_7()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXWhileExpression_in_ruleXPrimaryExpression19552);
                    this_XWhileExpression_7=ruleXWhileExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XWhileExpression_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 9 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8688:5: this_XDoWhileExpression_8= ruleXDoWhileExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_8()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXDoWhileExpression_in_ruleXPrimaryExpression19579);
                    this_XDoWhileExpression_8=ruleXDoWhileExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XDoWhileExpression_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8698:5: this_XThrowExpression_9= ruleXThrowExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_9()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXThrowExpression_in_ruleXPrimaryExpression19606);
                    this_XThrowExpression_9=ruleXThrowExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XThrowExpression_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 11 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8708:5: this_XReturnExpression_10= ruleXReturnExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_10()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXReturnExpression_in_ruleXPrimaryExpression19633);
                    this_XReturnExpression_10=ruleXReturnExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XReturnExpression_10; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 12 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8718:5: this_XTryCatchFinallyExpression_11= ruleXTryCatchFinallyExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_11()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXTryCatchFinallyExpression_in_ruleXPrimaryExpression19660);
                    this_XTryCatchFinallyExpression_11=ruleXTryCatchFinallyExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XTryCatchFinallyExpression_11; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 13 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8728:5: this_XParenthesizedExpression_12= ruleXParenthesizedExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_12()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXParenthesizedExpression_in_ruleXPrimaryExpression19687);
                    this_XParenthesizedExpression_12=ruleXParenthesizedExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XParenthesizedExpression_12; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXPrimaryExpression"


    // $ANTLR start "entryRuleXLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8744:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
    public final EObject entryRuleXLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXLiteral = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8745:2: (iv_ruleXLiteral= ruleXLiteral EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8746:2: iv_ruleXLiteral= ruleXLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXLiteral_in_entryRuleXLiteral19722);
            iv_ruleXLiteral=ruleXLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXLiteral19732); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXLiteral"


    // $ANTLR start "ruleXLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8753:1: ruleXLiteral returns [EObject current=null] : (this_XClosure_0= ruleXClosure | this_XBooleanLiteral_1= ruleXBooleanLiteral | this_XIntLiteral_2= ruleXIntLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XStringLiteral_4= ruleXStringLiteral | this_XTypeLiteral_5= ruleXTypeLiteral ) ;
    public final EObject ruleXLiteral() throws RecognitionException {
        EObject current = null;

        EObject this_XClosure_0 = null;

        EObject this_XBooleanLiteral_1 = null;

        EObject this_XIntLiteral_2 = null;

        EObject this_XNullLiteral_3 = null;

        EObject this_XStringLiteral_4 = null;

        EObject this_XTypeLiteral_5 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8756:28: ( (this_XClosure_0= ruleXClosure | this_XBooleanLiteral_1= ruleXBooleanLiteral | this_XIntLiteral_2= ruleXIntLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XStringLiteral_4= ruleXStringLiteral | this_XTypeLiteral_5= ruleXTypeLiteral ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8757:1: (this_XClosure_0= ruleXClosure | this_XBooleanLiteral_1= ruleXBooleanLiteral | this_XIntLiteral_2= ruleXIntLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XStringLiteral_4= ruleXStringLiteral | this_XTypeLiteral_5= ruleXTypeLiteral )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8757:1: (this_XClosure_0= ruleXClosure | this_XBooleanLiteral_1= ruleXBooleanLiteral | this_XIntLiteral_2= ruleXIntLiteral | this_XNullLiteral_3= ruleXNullLiteral | this_XStringLiteral_4= ruleXStringLiteral | this_XTypeLiteral_5= ruleXTypeLiteral )
            int alt175=6;
            switch ( input.LA(1) ) {
            case 36:
                {
                alt175=1;
                }
                break;
            case 119:
            case 120:
                {
                alt175=2;
                }
                break;
            case RULE_INT:
                {
                alt175=3;
                }
                break;
            case 121:
                {
                alt175=4;
                }
                break;
            case RULE_STRING:
                {
                alt175=5;
                }
                break;
            case 122:
                {
                alt175=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 175, 0, input);

                throw nvae;
            }

            switch (alt175) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8758:5: this_XClosure_0= ruleXClosure
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXClosure_in_ruleXLiteral19779);
                    this_XClosure_0=ruleXClosure();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XClosure_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8768:5: this_XBooleanLiteral_1= ruleXBooleanLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXBooleanLiteral_in_ruleXLiteral19806);
                    this_XBooleanLiteral_1=ruleXBooleanLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XBooleanLiteral_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8778:5: this_XIntLiteral_2= ruleXIntLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXIntLiteralParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXIntLiteral_in_ruleXLiteral19833);
                    this_XIntLiteral_2=ruleXIntLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XIntLiteral_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8788:5: this_XNullLiteral_3= ruleXNullLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXNullLiteral_in_ruleXLiteral19860);
                    this_XNullLiteral_3=ruleXNullLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XNullLiteral_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8798:5: this_XStringLiteral_4= ruleXStringLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXStringLiteral_in_ruleXLiteral19887);
                    this_XStringLiteral_4=ruleXStringLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XStringLiteral_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8808:5: this_XTypeLiteral_5= ruleXTypeLiteral
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXTypeLiteral_in_ruleXLiteral19914);
                    this_XTypeLiteral_5=ruleXTypeLiteral();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XTypeLiteral_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXLiteral"


    // $ANTLR start "entryRuleXClosure"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8824:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
    public final EObject entryRuleXClosure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXClosure = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8825:2: (iv_ruleXClosure= ruleXClosure EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8826:2: iv_ruleXClosure= ruleXClosure EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXClosureRule()); 
            }
            pushFollow(FOLLOW_ruleXClosure_in_entryRuleXClosure19949);
            iv_ruleXClosure=ruleXClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXClosure; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXClosure19959); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXClosure"


    // $ANTLR start "ruleXClosure"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8833:1: ruleXClosure returns [EObject current=null] : ( () otherlv_1= '[' ( ( (lv_formalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) ) )* )? otherlv_5= '|' ( (lv_expression_6_0= ruleXExpression ) ) otherlv_7= ']' ) ;
    public final EObject ruleXClosure() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        EObject lv_formalParameters_2_0 = null;

        EObject lv_formalParameters_4_0 = null;

        EObject lv_expression_6_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8836:28: ( ( () otherlv_1= '[' ( ( (lv_formalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) ) )* )? otherlv_5= '|' ( (lv_expression_6_0= ruleXExpression ) ) otherlv_7= ']' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8837:1: ( () otherlv_1= '[' ( ( (lv_formalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) ) )* )? otherlv_5= '|' ( (lv_expression_6_0= ruleXExpression ) ) otherlv_7= ']' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8837:1: ( () otherlv_1= '[' ( ( (lv_formalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) ) )* )? otherlv_5= '|' ( (lv_expression_6_0= ruleXExpression ) ) otherlv_7= ']' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8837:2: () otherlv_1= '[' ( ( (lv_formalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) ) )* )? otherlv_5= '|' ( (lv_expression_6_0= ruleXExpression ) ) otherlv_7= ']'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8837:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8838:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXClosureAccess().getXClosureAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleXClosure20005); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8847:1: ( ( (lv_formalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
            int alt177=2;
            int LA177_0 = input.LA(1);

            if ( (LA177_0==RULE_ID||LA177_0==19||LA177_0==128) ) {
                alt177=1;
            }
            switch (alt177) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8847:2: ( (lv_formalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) ) )*
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8847:2: ( (lv_formalParameters_2_0= ruleJvmFormalParameter ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8848:1: (lv_formalParameters_2_0= ruleJvmFormalParameter )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8848:1: (lv_formalParameters_2_0= ruleJvmFormalParameter )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8849:3: lv_formalParameters_2_0= ruleJvmFormalParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXClosureAccess().getFormalParametersJvmFormalParameterParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXClosure20027);
                    lv_formalParameters_2_0=ruleJvmFormalParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXClosureRule());
                      	        }
                             		add(
                             			current, 
                             			"formalParameters",
                              		lv_formalParameters_2_0, 
                              		"JvmFormalParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8865:2: (otherlv_3= ',' ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) ) )*
                    loop176:
                    do {
                        int alt176=2;
                        int LA176_0 = input.LA(1);

                        if ( (LA176_0==37) ) {
                            alt176=1;
                        }


                        switch (alt176) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8865:4: otherlv_3= ',' ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) )
                    	    {
                    	    otherlv_3=(Token)match(input,37,FOLLOW_37_in_ruleXClosure20040); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_2_1_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8869:1: ( (lv_formalParameters_4_0= ruleJvmFormalParameter ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8870:1: (lv_formalParameters_4_0= ruleJvmFormalParameter )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8870:1: (lv_formalParameters_4_0= ruleJvmFormalParameter )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8871:3: lv_formalParameters_4_0= ruleJvmFormalParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXClosureAccess().getFormalParametersJvmFormalParameterParserRuleCall_2_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXClosure20061);
                    	    lv_formalParameters_4_0=ruleJvmFormalParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXClosureRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"formalParameters",
                    	              		lv_formalParameters_4_0, 
                    	              		"JvmFormalParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop176;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_5=(Token)match(input,105,FOLLOW_105_in_ruleXClosure20077); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getXClosureAccess().getVerticalLineKeyword_3());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8891:1: ( (lv_expression_6_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8892:1: (lv_expression_6_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8892:1: (lv_expression_6_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8893:3: lv_expression_6_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXClosure20098);
            lv_expression_6_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXClosureRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_6_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_7=(Token)match(input,38,FOLLOW_38_in_ruleXClosure20110); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXClosure"


    // $ANTLR start "entryRuleXShortClosure"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8921:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
    public final EObject entryRuleXShortClosure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXShortClosure = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8922:2: (iv_ruleXShortClosure= ruleXShortClosure EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8923:2: iv_ruleXShortClosure= ruleXShortClosure EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXShortClosureRule()); 
            }
            pushFollow(FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure20146);
            iv_ruleXShortClosure=ruleXShortClosure();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXShortClosure; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXShortClosure20156); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXShortClosure"


    // $ANTLR start "ruleXShortClosure"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8930:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> ( () ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )? otherlv_4= '|' ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
    public final EObject ruleXShortClosure() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_formalParameters_1_0 = null;

        EObject lv_formalParameters_3_0 = null;

        EObject lv_expression_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8933:28: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> ( () ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )? otherlv_4= '|' ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8934:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> ( () ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )? otherlv_4= '|' ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8934:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> ( () ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )? otherlv_4= '|' ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8934:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> ( () ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )? otherlv_4= '|' ) ) ( (lv_expression_5_0= ruleXExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8934:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> ( () ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )? otherlv_4= '|' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8934:3: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> ( () ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )? otherlv_4= '|' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8945:5: ( () ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )? otherlv_4= '|' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8945:6: () ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )? otherlv_4= '|'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8945:6: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8946:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8951:2: ( ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
            int alt179=2;
            int LA179_0 = input.LA(1);

            if ( (LA179_0==RULE_ID||LA179_0==19||LA179_0==128) ) {
                alt179=1;
            }
            switch (alt179) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8951:3: ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )*
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8951:3: ( (lv_formalParameters_1_0= ruleJvmFormalParameter ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8952:1: (lv_formalParameters_1_0= ruleJvmFormalParameter )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8952:1: (lv_formalParameters_1_0= ruleJvmFormalParameter )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8953:3: lv_formalParameters_1_0= ruleJvmFormalParameter
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXShortClosureAccess().getFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure20254);
                    lv_formalParameters_1_0=ruleJvmFormalParameter();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXShortClosureRule());
                      	        }
                             		add(
                             			current, 
                             			"formalParameters",
                              		lv_formalParameters_1_0, 
                              		"JvmFormalParameter");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8969:2: (otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) ) )*
                    loop178:
                    do {
                        int alt178=2;
                        int LA178_0 = input.LA(1);

                        if ( (LA178_0==37) ) {
                            alt178=1;
                        }


                        switch (alt178) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8969:4: otherlv_2= ',' ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) )
                    	    {
                    	    otherlv_2=(Token)match(input,37,FOLLOW_37_in_ruleXShortClosure20267); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8973:1: ( (lv_formalParameters_3_0= ruleJvmFormalParameter ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8974:1: (lv_formalParameters_3_0= ruleJvmFormalParameter )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8974:1: (lv_formalParameters_3_0= ruleJvmFormalParameter )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8975:3: lv_formalParameters_3_0= ruleJvmFormalParameter
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXShortClosureAccess().getFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure20288);
                    	    lv_formalParameters_3_0=ruleJvmFormalParameter();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXShortClosureRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"formalParameters",
                    	              		lv_formalParameters_3_0, 
                    	              		"JvmFormalParameter");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop178;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_4=(Token)match(input,105,FOLLOW_105_in_ruleXShortClosure20304); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXShortClosureAccess().getVerticalLineKeyword_0_0_2());
                  
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8995:3: ( (lv_expression_5_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8996:1: (lv_expression_5_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8996:1: (lv_expression_5_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8997:3: lv_expression_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXShortClosure20327);
            lv_expression_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXShortClosureRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXShortClosure"


    // $ANTLR start "entryRuleXParenthesizedExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9021:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
    public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXParenthesizedExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9022:2: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9023:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression20363);
            iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXParenthesizedExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXParenthesizedExpression20373); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXParenthesizedExpression"


    // $ANTLR start "ruleXParenthesizedExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9030:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
    public final EObject ruleXParenthesizedExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_XExpression_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9033:28: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9034:1: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9034:1: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9034:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
            {
            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleXParenthesizedExpression20410); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
                  
            }
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
                  
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXParenthesizedExpression20432);
            this_XExpression_1=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_XExpression_1; 
                      afterParserOrEnumRuleCall();
                  
            }
            otherlv_2=(Token)match(input,23,FOLLOW_23_in_ruleXParenthesizedExpression20443); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXParenthesizedExpression"


    // $ANTLR start "entryRuleXIfExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9059:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
    public final EObject entryRuleXIfExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXIfExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9060:2: (iv_ruleXIfExpression= ruleXIfExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9061:2: iv_ruleXIfExpression= ruleXIfExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXIfExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression20479);
            iv_ruleXIfExpression=ruleXIfExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXIfExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXIfExpression20489); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXIfExpression"


    // $ANTLR start "ruleXIfExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9068:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
    public final EObject ruleXIfExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_if_3_0 = null;

        EObject lv_then_5_0 = null;

        EObject lv_else_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9071:28: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9072:1: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9072:1: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9072:2: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9072:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9073:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,106,FOLLOW_106_in_ruleXIfExpression20535); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleXIfExpression20547); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9086:1: ( (lv_if_3_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9087:1: (lv_if_3_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9087:1: (lv_if_3_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9088:3: lv_if_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression20568);
            lv_if_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"if",
                      		lv_if_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleXIfExpression20580); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9108:1: ( (lv_then_5_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9109:1: (lv_then_5_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9109:1: (lv_then_5_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9110:3: lv_then_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression20601);
            lv_then_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"then",
                      		lv_then_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9126:2: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
            int alt180=2;
            int LA180_0 = input.LA(1);

            if ( (LA180_0==107) ) {
                int LA180_1 = input.LA(2);

                if ( (synpred33_InternalUnicornLanguageDefinition()) ) {
                    alt180=1;
                }
            }
            switch (alt180) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9126:3: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9126:3: ( ( 'else' )=>otherlv_6= 'else' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9126:4: ( 'else' )=>otherlv_6= 'else'
                    {
                    otherlv_6=(Token)match(input,107,FOLLOW_107_in_ruleXIfExpression20622); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
                          
                    }

                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9131:2: ( (lv_else_7_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9132:1: (lv_else_7_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9132:1: (lv_else_7_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9133:3: lv_else_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXIfExpression20644);
                    lv_else_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"else",
                              		lv_else_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXIfExpression"


    // $ANTLR start "entryRuleXSwitchExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9157:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
    public final EObject entryRuleXSwitchExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXSwitchExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9158:2: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9159:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXSwitchExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression20682);
            iv_ruleXSwitchExpression=ruleXSwitchExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXSwitchExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXSwitchExpression20692); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXSwitchExpression"


    // $ANTLR start "ruleXSwitchExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9166:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}' ) ;
    public final EObject ruleXSwitchExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        AntlrDatatypeRuleToken lv_localVarName_2_0 = null;

        EObject lv_switch_4_0 = null;

        EObject lv_cases_6_0 = null;

        EObject lv_default_9_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9169:28: ( ( () otherlv_1= 'switch' ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9170:1: ( () otherlv_1= 'switch' ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9170:1: ( () otherlv_1= 'switch' ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9170:2: () otherlv_1= 'switch' ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )? ( (lv_switch_4_0= ruleXExpression ) ) otherlv_5= '{' ( (lv_cases_6_0= ruleXCasePart ) )+ (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )? otherlv_10= '}'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9170:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9171:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,108,FOLLOW_108_in_ruleXSwitchExpression20738); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9180:1: ( ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':' )?
            int alt181=2;
            int LA181_0 = input.LA(1);

            if ( (LA181_0==RULE_ID) ) {
                int LA181_1 = input.LA(2);

                if ( (LA181_1==21) ) {
                    alt181=1;
                }
            }
            switch (alt181) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9180:2: ( (lv_localVarName_2_0= ruleValidID ) ) otherlv_3= ':'
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9180:2: ( (lv_localVarName_2_0= ruleValidID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9181:1: (lv_localVarName_2_0= ruleValidID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9181:1: (lv_localVarName_2_0= ruleValidID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9182:3: lv_localVarName_2_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getLocalVarNameValidIDParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXSwitchExpression20760);
                    lv_localVarName_2_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"localVarName",
                              		lv_localVarName_2_0, 
                              		"ValidID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_3=(Token)match(input,21,FOLLOW_21_in_ruleXSwitchExpression20772); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1());
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9202:3: ( (lv_switch_4_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9203:1: (lv_switch_4_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9203:1: (lv_switch_4_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9204:3: lv_switch_4_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXSwitchExpression20795);
            lv_switch_4_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"switch",
                      		lv_switch_4_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_5=(Token)match(input,13,FOLLOW_13_in_ruleXSwitchExpression20807); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_4());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9224:1: ( (lv_cases_6_0= ruleXCasePart ) )+
            int cnt182=0;
            loop182:
            do {
                int alt182=2;
                int LA182_0 = input.LA(1);

                if ( (LA182_0==RULE_ID||LA182_0==19||LA182_0==21||LA182_0==110||LA182_0==128) ) {
                    alt182=1;
                }


                switch (alt182) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9225:1: (lv_cases_6_0= ruleXCasePart )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9225:1: (lv_cases_6_0= ruleXCasePart )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9226:3: lv_cases_6_0= ruleXCasePart
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_5_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXCasePart_in_ruleXSwitchExpression20828);
            	    lv_cases_6_0=ruleXCasePart();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"cases",
            	              		lv_cases_6_0, 
            	              		"XCasePart");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt182 >= 1 ) break loop182;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(182, input);
                        throw eee;
                }
                cnt182++;
            } while (true);

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9242:3: (otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) ) )?
            int alt183=2;
            int LA183_0 = input.LA(1);

            if ( (LA183_0==109) ) {
                alt183=1;
            }
            switch (alt183) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9242:5: otherlv_7= 'default' otherlv_8= ':' ( (lv_default_9_0= ruleXExpression ) )
                    {
                    otherlv_7=(Token)match(input,109,FOLLOW_109_in_ruleXSwitchExpression20842); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_6_0());
                          
                    }
                    otherlv_8=(Token)match(input,21,FOLLOW_21_in_ruleXSwitchExpression20854); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_6_1());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9250:1: ( (lv_default_9_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9251:1: (lv_default_9_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9251:1: (lv_default_9_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9252:3: lv_default_9_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_6_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXSwitchExpression20875);
                    lv_default_9_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"default",
                              		lv_default_9_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_10=(Token)match(input,14,FOLLOW_14_in_ruleXSwitchExpression20889); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_7());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXSwitchExpression"


    // $ANTLR start "entryRuleXCasePart"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9280:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
    public final EObject entryRuleXCasePart() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCasePart = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9281:2: (iv_ruleXCasePart= ruleXCasePart EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9282:2: iv_ruleXCasePart= ruleXCasePart EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCasePartRule()); 
            }
            pushFollow(FOLLOW_ruleXCasePart_in_entryRuleXCasePart20925);
            iv_ruleXCasePart=ruleXCasePart();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCasePart; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCasePart20935); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCasePart"


    // $ANTLR start "ruleXCasePart"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9289:1: ruleXCasePart returns [EObject current=null] : ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) ) ;
    public final EObject ruleXCasePart() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_typeGuard_0_0 = null;

        EObject lv_case_2_0 = null;

        EObject lv_then_4_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9292:28: ( ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9293:1: ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9293:1: ( ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9293:2: ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )? (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )? otherlv_3= ':' ( (lv_then_4_0= ruleXExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9293:2: ( (lv_typeGuard_0_0= ruleJvmTypeReference ) )?
            int alt184=2;
            int LA184_0 = input.LA(1);

            if ( (LA184_0==RULE_ID||LA184_0==19||LA184_0==128) ) {
                alt184=1;
            }
            switch (alt184) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9294:1: (lv_typeGuard_0_0= ruleJvmTypeReference )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9294:1: (lv_typeGuard_0_0= ruleJvmTypeReference )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9295:3: lv_typeGuard_0_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCasePart20981);
                    lv_typeGuard_0_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXCasePartRule());
                      	        }
                             		set(
                             			current, 
                             			"typeGuard",
                              		lv_typeGuard_0_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9311:3: (otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) ) )?
            int alt185=2;
            int LA185_0 = input.LA(1);

            if ( (LA185_0==110) ) {
                alt185=1;
            }
            switch (alt185) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9311:5: otherlv_1= 'case' ( (lv_case_2_0= ruleXExpression ) )
                    {
                    otherlv_1=(Token)match(input,110,FOLLOW_110_in_ruleXCasePart20995); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getXCasePartAccess().getCaseKeyword_1_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9315:1: ( (lv_case_2_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9316:1: (lv_case_2_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9316:1: (lv_case_2_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9317:3: lv_case_2_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXCasePart21016);
                    lv_case_2_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXCasePartRule());
                      	        }
                             		set(
                             			current, 
                             			"case",
                              		lv_case_2_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,21,FOLLOW_21_in_ruleXCasePart21030); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXCasePartAccess().getColonKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9337:1: ( (lv_then_4_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9338:1: (lv_then_4_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9338:1: (lv_then_4_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9339:3: lv_then_4_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXCasePart21051);
            lv_then_4_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXCasePartRule());
              	        }
                     		set(
                     			current, 
                     			"then",
                      		lv_then_4_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCasePart"


    // $ANTLR start "entryRuleXForLoopExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9363:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
    public final EObject entryRuleXForLoopExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXForLoopExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9364:2: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9365:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXForLoopExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression21087);
            iv_ruleXForLoopExpression=ruleXForLoopExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXForLoopExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXForLoopExpression21097); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXForLoopExpression"


    // $ANTLR start "ruleXForLoopExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9372:1: ruleXForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
    public final EObject ruleXForLoopExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_declaredParam_3_0 = null;

        EObject lv_forExpression_5_0 = null;

        EObject lv_eachExpression_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9375:28: ( ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9376:1: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9376:1: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9376:2: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9376:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9377:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,111,FOLLOW_111_in_ruleXForLoopExpression21143); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleXForLoopExpression21155); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9390:1: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9391:1: (lv_declaredParam_3_0= ruleJvmFormalParameter )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9391:1: (lv_declaredParam_3_0= ruleJvmFormalParameter )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9392:3: lv_declaredParam_3_0= ruleJvmFormalParameter
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXForLoopExpression21176);
            lv_declaredParam_3_0=ruleJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"declaredParam",
                      		lv_declaredParam_3_0, 
                      		"JvmFormalParameter");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,21,FOLLOW_21_in_ruleXForLoopExpression21188); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_4());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9412:1: ( (lv_forExpression_5_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9413:1: (lv_forExpression_5_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9413:1: (lv_forExpression_5_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9414:3: lv_forExpression_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXForLoopExpression21209);
            lv_forExpression_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"forExpression",
                      		lv_forExpression_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,23,FOLLOW_23_in_ruleXForLoopExpression21221); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_6());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9434:1: ( (lv_eachExpression_7_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9435:1: (lv_eachExpression_7_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9435:1: (lv_eachExpression_7_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9436:3: lv_eachExpression_7_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_7_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXForLoopExpression21242);
            lv_eachExpression_7_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"eachExpression",
                      		lv_eachExpression_7_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXForLoopExpression"


    // $ANTLR start "entryRuleXWhileExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9460:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
    public final EObject entryRuleXWhileExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXWhileExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9461:2: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9462:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXWhileExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression21278);
            iv_ruleXWhileExpression=ruleXWhileExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXWhileExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXWhileExpression21288); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXWhileExpression"


    // $ANTLR start "ruleXWhileExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9469:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
    public final EObject ruleXWhileExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_predicate_3_0 = null;

        EObject lv_body_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9472:28: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9473:1: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9473:1: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9473:2: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9473:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9474:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,112,FOLLOW_112_in_ruleXWhileExpression21334); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleXWhileExpression21346); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9487:1: ( (lv_predicate_3_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9488:1: (lv_predicate_3_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9488:1: (lv_predicate_3_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9489:3: lv_predicate_3_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXWhileExpression21367);
            lv_predicate_3_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"predicate",
                      		lv_predicate_3_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleXWhileExpression21379); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9509:1: ( (lv_body_5_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9510:1: (lv_body_5_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9510:1: (lv_body_5_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9511:3: lv_body_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXWhileExpression21400);
            lv_body_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXWhileExpression"


    // $ANTLR start "entryRuleXDoWhileExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9535:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
    public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXDoWhileExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9536:2: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9537:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression21436);
            iv_ruleXDoWhileExpression=ruleXDoWhileExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXDoWhileExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXDoWhileExpression21446); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXDoWhileExpression"


    // $ANTLR start "ruleXDoWhileExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9544:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
    public final EObject ruleXDoWhileExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_body_2_0 = null;

        EObject lv_predicate_5_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9547:28: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9548:1: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9548:1: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9548:2: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9548:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9549:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,113,FOLLOW_113_in_ruleXDoWhileExpression21492); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9558:1: ( (lv_body_2_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9559:1: (lv_body_2_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9559:1: (lv_body_2_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9560:3: lv_body_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXDoWhileExpression21513);
            lv_body_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"body",
                      		lv_body_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,112,FOLLOW_112_in_ruleXDoWhileExpression21525); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
                  
            }
            otherlv_4=(Token)match(input,19,FOLLOW_19_in_ruleXDoWhileExpression21537); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9584:1: ( (lv_predicate_5_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9585:1: (lv_predicate_5_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9585:1: (lv_predicate_5_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9586:3: lv_predicate_5_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXDoWhileExpression21558);
            lv_predicate_5_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"predicate",
                      		lv_predicate_5_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,23,FOLLOW_23_in_ruleXDoWhileExpression21570); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXDoWhileExpression"


    // $ANTLR start "entryRuleXBlockExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9614:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
    public final EObject entryRuleXBlockExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBlockExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9615:2: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9616:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBlockExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression21606);
            iv_ruleXBlockExpression=ruleXBlockExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBlockExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBlockExpression21616); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBlockExpression"


    // $ANTLR start "ruleXBlockExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9623:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
    public final EObject ruleXBlockExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        EObject lv_expressions_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9626:28: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9627:1: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9627:1: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9627:2: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9627:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9628:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleXBlockExpression21662); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9637:1: ( ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )? )*
            loop187:
            do {
                int alt187=2;
                int LA187_0 = input.LA(1);

                if ( ((LA187_0>=RULE_STRING && LA187_0<=RULE_INT)||LA187_0==13||LA187_0==19||LA187_0==36||LA187_0==80||LA187_0==91||(LA187_0>=94 && LA187_0<=95)||LA187_0==100||LA187_0==106||LA187_0==108||(LA187_0>=111 && LA187_0<=113)||(LA187_0>=115 && LA187_0<=117)||(LA187_0>=119 && LA187_0<=125)) ) {
                    alt187=1;
                }


                switch (alt187) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9637:2: ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) ) (otherlv_3= ';' )?
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9637:2: ( (lv_expressions_2_0= ruleXExpressionInsideBlock ) )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9638:1: (lv_expressions_2_0= ruleXExpressionInsideBlock )
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9638:1: (lv_expressions_2_0= ruleXExpressionInsideBlock )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9639:3: lv_expressions_2_0= ruleXExpressionInsideBlock
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionInsideBlockParserRuleCall_2_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleXExpressionInsideBlock_in_ruleXBlockExpression21684);
            	    lv_expressions_2_0=ruleXExpressionInsideBlock();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"expressions",
            	              		lv_expressions_2_0, 
            	              		"XExpressionInsideBlock");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9655:2: (otherlv_3= ';' )?
            	    int alt186=2;
            	    int LA186_0 = input.LA(1);

            	    if ( (LA186_0==114) ) {
            	        alt186=1;
            	    }
            	    switch (alt186) {
            	        case 1 :
            	            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9655:4: otherlv_3= ';'
            	            {
            	            otherlv_3=(Token)match(input,114,FOLLOW_114_in_ruleXBlockExpression21697); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
            	                  
            	            }

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop187;
                }
            } while (true);

            otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleXBlockExpression21713); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBlockExpression"


    // $ANTLR start "entryRuleXExpressionInsideBlock"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9671:1: entryRuleXExpressionInsideBlock returns [EObject current=null] : iv_ruleXExpressionInsideBlock= ruleXExpressionInsideBlock EOF ;
    public final EObject entryRuleXExpressionInsideBlock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXExpressionInsideBlock = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9672:2: (iv_ruleXExpressionInsideBlock= ruleXExpressionInsideBlock EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9673:2: iv_ruleXExpressionInsideBlock= ruleXExpressionInsideBlock EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXExpressionInsideBlockRule()); 
            }
            pushFollow(FOLLOW_ruleXExpressionInsideBlock_in_entryRuleXExpressionInsideBlock21749);
            iv_ruleXExpressionInsideBlock=ruleXExpressionInsideBlock();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXExpressionInsideBlock; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionInsideBlock21759); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXExpressionInsideBlock"


    // $ANTLR start "ruleXExpressionInsideBlock"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9680:1: ruleXExpressionInsideBlock returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
    public final EObject ruleXExpressionInsideBlock() throws RecognitionException {
        EObject current = null;

        EObject this_XVariableDeclaration_0 = null;

        EObject this_XExpression_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9683:28: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9684:1: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9684:1: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
            int alt188=2;
            int LA188_0 = input.LA(1);

            if ( ((LA188_0>=115 && LA188_0<=116)) ) {
                alt188=1;
            }
            else if ( ((LA188_0>=RULE_STRING && LA188_0<=RULE_INT)||LA188_0==13||LA188_0==19||LA188_0==36||LA188_0==80||LA188_0==91||(LA188_0>=94 && LA188_0<=95)||LA188_0==100||LA188_0==106||LA188_0==108||(LA188_0>=111 && LA188_0<=113)||LA188_0==117||(LA188_0>=119 && LA188_0<=125)) ) {
                alt188=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 188, 0, input);

                throw nvae;
            }
            switch (alt188) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9685:5: this_XVariableDeclaration_0= ruleXVariableDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXExpressionInsideBlockAccess().getXVariableDeclarationParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXVariableDeclaration_in_ruleXExpressionInsideBlock21806);
                    this_XVariableDeclaration_0=ruleXVariableDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XVariableDeclaration_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9695:5: this_XExpression_1= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getXExpressionInsideBlockAccess().getXExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXExpressionInsideBlock21833);
                    this_XExpression_1=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXExpressionInsideBlock"


    // $ANTLR start "entryRuleXVariableDeclaration"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9711:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
    public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXVariableDeclaration = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9712:2: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9713:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXVariableDeclarationRule()); 
            }
            pushFollow(FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration21868);
            iv_ruleXVariableDeclaration=ruleXVariableDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXVariableDeclaration; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXVariableDeclaration21878); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXVariableDeclaration"


    // $ANTLR start "ruleXVariableDeclaration"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9720:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
    public final EObject ruleXVariableDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_writeable_1_0=null;
        Token otherlv_2=null;
        Token otherlv_6=null;
        EObject lv_type_3_0 = null;

        AntlrDatatypeRuleToken lv_name_4_0 = null;

        AntlrDatatypeRuleToken lv_name_5_0 = null;

        EObject lv_right_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9723:28: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9724:1: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9724:1: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9724:2: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9724:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9725:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9730:2: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
            int alt189=2;
            int LA189_0 = input.LA(1);

            if ( (LA189_0==115) ) {
                alt189=1;
            }
            else if ( (LA189_0==116) ) {
                alt189=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 189, 0, input);

                throw nvae;
            }
            switch (alt189) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9730:3: ( (lv_writeable_1_0= 'var' ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9730:3: ( (lv_writeable_1_0= 'var' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9731:1: (lv_writeable_1_0= 'var' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9731:1: (lv_writeable_1_0= 'var' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9732:3: lv_writeable_1_0= 'var'
                    {
                    lv_writeable_1_0=(Token)match(input,115,FOLLOW_115_in_ruleXVariableDeclaration21931); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		setWithLastConsumed(current, "writeable", true, "var");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9746:7: otherlv_2= 'val'
                    {
                    otherlv_2=(Token)match(input,116,FOLLOW_116_in_ruleXVariableDeclaration21962); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9750:2: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
            int alt190=2;
            int LA190_0 = input.LA(1);

            if ( (LA190_0==RULE_ID) ) {
                int LA190_1 = input.LA(2);

                if ( (synpred34_InternalUnicornLanguageDefinition()) ) {
                    alt190=1;
                }
                else if ( (true) ) {
                    alt190=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 190, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA190_0==19) && (synpred34_InternalUnicornLanguageDefinition())) {
                alt190=1;
            }
            else if ( (LA190_0==128) && (synpred34_InternalUnicornLanguageDefinition())) {
                alt190=1;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 190, 0, input);

                throw nvae;
            }
            switch (alt190) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9750:3: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9750:3: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9750:4: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9758:6: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9758:7: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9758:7: ( (lv_type_3_0= ruleJvmTypeReference ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9759:1: (lv_type_3_0= ruleJvmTypeReference )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9759:1: (lv_type_3_0= ruleJvmTypeReference )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9760:3: lv_type_3_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXVariableDeclaration22010);
                    lv_type_3_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"type",
                              		lv_type_3_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9776:2: ( (lv_name_4_0= ruleValidID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9777:1: (lv_name_4_0= ruleValidID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9777:1: (lv_name_4_0= ruleValidID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9778:3: lv_name_4_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXVariableDeclaration22031);
                    lv_name_4_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_4_0, 
                              		"ValidID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9795:6: ( (lv_name_5_0= ruleValidID ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9795:6: ( (lv_name_5_0= ruleValidID ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9796:1: (lv_name_5_0= ruleValidID )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9796:1: (lv_name_5_0= ruleValidID )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9797:3: lv_name_5_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleXVariableDeclaration22060);
                    lv_name_5_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_5_0, 
                              		"ValidID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9813:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
            int alt191=2;
            int LA191_0 = input.LA(1);

            if ( (LA191_0==17) ) {
                alt191=1;
            }
            switch (alt191) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9813:5: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
                    {
                    otherlv_6=(Token)match(input,17,FOLLOW_17_in_ruleXVariableDeclaration22074); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9817:1: ( (lv_right_7_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9818:1: (lv_right_7_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9818:1: (lv_right_7_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9819:3: lv_right_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXVariableDeclaration22095);
                    lv_right_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
                      	        }
                             		set(
                             			current, 
                             			"right",
                              		lv_right_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXVariableDeclaration"


    // $ANTLR start "entryRuleJvmFormalParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9843:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
    public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmFormalParameter = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9844:2: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9845:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmFormalParameterRule()); 
            }
            pushFollow(FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter22133);
            iv_ruleJvmFormalParameter=ruleJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmFormalParameter; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmFormalParameter22143); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmFormalParameter"


    // $ANTLR start "ruleJvmFormalParameter"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9852:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
    public final EObject ruleJvmFormalParameter() throws RecognitionException {
        EObject current = null;

        EObject lv_parameterType_0_0 = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9855:28: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9856:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9856:1: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9856:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9856:2: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
            int alt192=2;
            int LA192_0 = input.LA(1);

            if ( (LA192_0==RULE_ID) ) {
                int LA192_1 = input.LA(2);

                if ( (LA192_1==RULE_ID||LA192_1==91||LA192_1==102) ) {
                    alt192=1;
                }
            }
            else if ( (LA192_0==19||LA192_0==128) ) {
                alt192=1;
            }
            switch (alt192) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9857:1: (lv_parameterType_0_0= ruleJvmTypeReference )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9857:1: (lv_parameterType_0_0= ruleJvmTypeReference )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9858:3: lv_parameterType_0_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmFormalParameter22189);
                    lv_parameterType_0_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
                      	        }
                             		set(
                             			current, 
                             			"parameterType",
                              		lv_parameterType_0_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9874:3: ( (lv_name_1_0= ruleValidID ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9875:1: (lv_name_1_0= ruleValidID )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9875:1: (lv_name_1_0= ruleValidID )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9876:3: lv_name_1_0= ruleValidID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleJvmFormalParameter22211);
            lv_name_1_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
              	        }
                     		set(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ValidID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmFormalParameter"


    // $ANTLR start "entryRuleXFeatureCall"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9900:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
    public final EObject entryRuleXFeatureCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFeatureCall = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9901:2: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9902:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFeatureCallRule()); 
            }
            pushFollow(FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall22247);
            iv_ruleXFeatureCall=ruleXFeatureCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFeatureCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFeatureCall22257); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFeatureCall"


    // $ANTLR start "ruleXFeatureCall"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9909:1: ruleXFeatureCall returns [EObject current=null] : ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ) ;
    public final EObject ruleXFeatureCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token lv_explicitOperationCall_8_0=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        EObject lv_typeArguments_3_0 = null;

        EObject lv_typeArguments_5_0 = null;

        EObject lv_featureCallArguments_9_0 = null;

        EObject lv_featureCallArguments_10_0 = null;

        EObject lv_featureCallArguments_12_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9912:28: ( ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9913:1: ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9913:1: ( () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9913:2: () ( ( ruleStaticQualifier ) )? (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9913:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9914:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9919:2: ( ( ruleStaticQualifier ) )?
            int alt193=2;
            int LA193_0 = input.LA(1);

            if ( (LA193_0==RULE_ID) ) {
                int LA193_1 = input.LA(2);

                if ( (LA193_1==118) ) {
                    alt193=1;
                }
            }
            switch (alt193) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9920:1: ( ruleStaticQualifier )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9920:1: ( ruleStaticQualifier )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9921:3: ruleStaticQualifier
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFeatureCallRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getDeclaringTypeJvmDeclaredTypeCrossReference_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleStaticQualifier_in_ruleXFeatureCall22314);
                    ruleStaticQualifier();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9934:3: (otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>' )?
            int alt195=2;
            int LA195_0 = input.LA(1);

            if ( (LA195_0==91) ) {
                alt195=1;
            }
            switch (alt195) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9934:5: otherlv_2= '<' ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) ) (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )* otherlv_6= '>'
                    {
                    otherlv_2=(Token)match(input,91,FOLLOW_91_in_ruleXFeatureCall22328); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_2_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9938:1: ( (lv_typeArguments_3_0= ruleJvmArgumentTypeReference ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9939:1: (lv_typeArguments_3_0= ruleJvmArgumentTypeReference )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9939:1: (lv_typeArguments_3_0= ruleJvmArgumentTypeReference )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9940:3: lv_typeArguments_3_0= ruleJvmArgumentTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall22349);
                    lv_typeArguments_3_0=ruleJvmArgumentTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                      	        }
                             		add(
                             			current, 
                             			"typeArguments",
                              		lv_typeArguments_3_0, 
                              		"JvmArgumentTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9956:2: (otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) ) )*
                    loop194:
                    do {
                        int alt194=2;
                        int LA194_0 = input.LA(1);

                        if ( (LA194_0==37) ) {
                            alt194=1;
                        }


                        switch (alt194) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9956:4: otherlv_4= ',' ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) )
                    	    {
                    	    otherlv_4=(Token)match(input,37,FOLLOW_37_in_ruleXFeatureCall22362); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getXFeatureCallAccess().getCommaKeyword_2_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9960:1: ( (lv_typeArguments_5_0= ruleJvmArgumentTypeReference ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9961:1: (lv_typeArguments_5_0= ruleJvmArgumentTypeReference )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9961:1: (lv_typeArguments_5_0= ruleJvmArgumentTypeReference )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9962:3: lv_typeArguments_5_0= ruleJvmArgumentTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_2_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall22383);
                    	    lv_typeArguments_5_0=ruleJvmArgumentTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"typeArguments",
                    	              		lv_typeArguments_5_0, 
                    	              		"JvmArgumentTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop194;
                        }
                    } while (true);

                    otherlv_6=(Token)match(input,90,FOLLOW_90_in_ruleXFeatureCall22397); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_2_3());
                          
                    }

                    }
                    break;

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9982:3: ( ( ruleIdOrSuper ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9983:1: ( ruleIdOrSuper )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9983:1: ( ruleIdOrSuper )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9984:3: ruleIdOrSuper
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXFeatureCallRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleIdOrSuper_in_ruleXFeatureCall22422);
            ruleIdOrSuper();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9997:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
            int alt198=2;
            alt198 = dfa198.predict(input);
            switch (alt198) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9997:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9997:3: ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9997:4: ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10004:1: (lv_explicitOperationCall_8_0= '(' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10005:3: lv_explicitOperationCall_8_0= '('
                    {
                    lv_explicitOperationCall_8_0=(Token)match(input,19,FOLLOW_19_in_ruleXFeatureCall22456); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_explicitOperationCall_8_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_4_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXFeatureCallRule());
                      	        }
                             		setWithLastConsumed(current, "explicitOperationCall", true, "(");
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10018:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )?
                    int alt197=3;
                    alt197 = dfa197.predict(input);
                    switch (alt197) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10018:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10018:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10018:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10030:1: (lv_featureCallArguments_9_0= ruleXShortClosure )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10031:3: lv_featureCallArguments_9_0= ruleXShortClosure
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXShortClosure_in_ruleXFeatureCall22531);
                            lv_featureCallArguments_9_0=ruleXShortClosure();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"featureCallArguments",
                                      		lv_featureCallArguments_9_0, 
                                      		"XShortClosure");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10048:6: ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10048:6: ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10048:7: ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )*
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10048:7: ( (lv_featureCallArguments_10_0= ruleXExpression ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10049:1: (lv_featureCallArguments_10_0= ruleXExpression )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10049:1: (lv_featureCallArguments_10_0= ruleXExpression )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10050:3: lv_featureCallArguments_10_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXFeatureCall22559);
                            lv_featureCallArguments_10_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"featureCallArguments",
                                      		lv_featureCallArguments_10_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10066:2: (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )*
                            loop196:
                            do {
                                int alt196=2;
                                int LA196_0 = input.LA(1);

                                if ( (LA196_0==37) ) {
                                    alt196=1;
                                }


                                switch (alt196) {
                            	case 1 :
                            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10066:4: otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) )
                            	    {
                            	    otherlv_11=(Token)match(input,37,FOLLOW_37_in_ruleXFeatureCall22572); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_11, grammarAccess.getXFeatureCallAccess().getCommaKeyword_4_1_1_1_0());
                            	          
                            	    }
                            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10070:1: ( (lv_featureCallArguments_12_0= ruleXExpression ) )
                            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10071:1: (lv_featureCallArguments_12_0= ruleXExpression )
                            	    {
                            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10071:1: (lv_featureCallArguments_12_0= ruleXExpression )
                            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10072:3: lv_featureCallArguments_12_0= ruleXExpression
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FOLLOW_ruleXExpression_in_ruleXFeatureCall22593);
                            	    lv_featureCallArguments_12_0=ruleXExpression();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"featureCallArguments",
                            	              		lv_featureCallArguments_12_0, 
                            	              		"XExpression");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop196;
                                }
                            } while (true);


                            }


                            }
                            break;

                    }

                    otherlv_13=(Token)match(input,23,FOLLOW_23_in_ruleXFeatureCall22610); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_13, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_4_2());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFeatureCall"


    // $ANTLR start "entryRuleIdOrSuper"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10100:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
    public final String entryRuleIdOrSuper() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleIdOrSuper = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10101:2: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10102:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIdOrSuperRule()); 
            }
            pushFollow(FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper22649);
            iv_ruleIdOrSuper=ruleIdOrSuper();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIdOrSuper.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIdOrSuper22660); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIdOrSuper"


    // $ANTLR start "ruleIdOrSuper"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10109:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'super' ) ;
    public final AntlrDatatypeRuleToken ruleIdOrSuper() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10112:28: ( (this_ValidID_0= ruleValidID | kw= 'super' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10113:1: (this_ValidID_0= ruleValidID | kw= 'super' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10113:1: (this_ValidID_0= ruleValidID | kw= 'super' )
            int alt199=2;
            int LA199_0 = input.LA(1);

            if ( (LA199_0==RULE_ID) ) {
                alt199=1;
            }
            else if ( (LA199_0==117) ) {
                alt199=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 199, 0, input);

                throw nvae;
            }
            switch (alt199) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10114:5: this_ValidID_0= ruleValidID
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getIdOrSuperAccess().getValidIDParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleValidID_in_ruleIdOrSuper22707);
                    this_ValidID_0=ruleValidID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		current.merge(this_ValidID_0);
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10126:2: kw= 'super'
                    {
                    kw=(Token)match(input,117,FOLLOW_117_in_ruleIdOrSuper22731); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIdOrSuper"


    // $ANTLR start "entryRuleStaticQualifier"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10139:1: entryRuleStaticQualifier returns [String current=null] : iv_ruleStaticQualifier= ruleStaticQualifier EOF ;
    public final String entryRuleStaticQualifier() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleStaticQualifier = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10140:2: (iv_ruleStaticQualifier= ruleStaticQualifier EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10141:2: iv_ruleStaticQualifier= ruleStaticQualifier EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStaticQualifierRule()); 
            }
            pushFollow(FOLLOW_ruleStaticQualifier_in_entryRuleStaticQualifier22772);
            iv_ruleStaticQualifier=ruleStaticQualifier();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStaticQualifier.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleStaticQualifier22783); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStaticQualifier"


    // $ANTLR start "ruleStaticQualifier"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10148:1: ruleStaticQualifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '::' )+ ;
    public final AntlrDatatypeRuleToken ruleStaticQualifier() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10151:28: ( (this_ValidID_0= ruleValidID kw= '::' )+ )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10152:1: (this_ValidID_0= ruleValidID kw= '::' )+
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10152:1: (this_ValidID_0= ruleValidID kw= '::' )+
            int cnt200=0;
            loop200:
            do {
                int alt200=2;
                int LA200_0 = input.LA(1);

                if ( (LA200_0==RULE_ID) ) {
                    int LA200_2 = input.LA(2);

                    if ( (LA200_2==118) ) {
                        alt200=1;
                    }


                }


                switch (alt200) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10153:5: this_ValidID_0= ruleValidID kw= '::'
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	              newCompositeNode(grammarAccess.getStaticQualifierAccess().getValidIDParserRuleCall_0()); 
            	          
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleStaticQualifier22830);
            	    this_ValidID_0=ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		current.merge(this_ValidID_0);
            	          
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	              afterParserOrEnumRuleCall();
            	          
            	    }
            	    kw=(Token)match(input,118,FOLLOW_118_in_ruleStaticQualifier22848); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getStaticQualifierAccess().getColonColonKeyword_1()); 
            	          
            	    }

            	    }
            	    break;

            	default :
            	    if ( cnt200 >= 1 ) break loop200;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(200, input);
                        throw eee;
                }
                cnt200++;
            } while (true);


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStaticQualifier"


    // $ANTLR start "entryRuleXConstructorCall"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10177:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
    public final EObject entryRuleXConstructorCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXConstructorCall = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10178:2: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10179:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXConstructorCallRule()); 
            }
            pushFollow(FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall22889);
            iv_ruleXConstructorCall=ruleXConstructorCall();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXConstructorCall; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXConstructorCall22899); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXConstructorCall"


    // $ANTLR start "ruleXConstructorCall"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10186:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' ) ;
    public final EObject ruleXConstructorCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        EObject lv_typeArguments_4_0 = null;

        EObject lv_typeArguments_6_0 = null;

        EObject lv_arguments_9_0 = null;

        EObject lv_arguments_10_0 = null;

        EObject lv_arguments_12_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10189:28: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10190:1: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10190:1: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10190:2: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? otherlv_8= '(' ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10190:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10191:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,80,FOLLOW_80_in_ruleXConstructorCall22945); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10200:1: ( ( ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10201:1: ( ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10201:1: ( ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10202:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXConstructorCallRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXConstructorCall22968);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10215:2: (otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
            int alt202=2;
            int LA202_0 = input.LA(1);

            if ( (LA202_0==91) ) {
                alt202=1;
            }
            switch (alt202) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10215:4: otherlv_3= '<' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
                    {
                    otherlv_3=(Token)match(input,91,FOLLOW_91_in_ruleXConstructorCall22981); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10219:1: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10220:1: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10220:1: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10221:3: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall23002);
                    lv_typeArguments_4_0=ruleJvmArgumentTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	        }
                             		add(
                             			current, 
                             			"typeArguments",
                              		lv_typeArguments_4_0, 
                              		"JvmArgumentTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10237:2: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
                    loop201:
                    do {
                        int alt201=2;
                        int LA201_0 = input.LA(1);

                        if ( (LA201_0==37) ) {
                            alt201=1;
                        }


                        switch (alt201) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10237:4: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                    	    {
                    	    otherlv_5=(Token)match(input,37,FOLLOW_37_in_ruleXConstructorCall23015); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10241:1: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10242:1: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10242:1: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10243:3: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall23036);
                    	    lv_typeArguments_6_0=ruleJvmArgumentTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"typeArguments",
                    	              		lv_typeArguments_6_0, 
                    	              		"JvmArgumentTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop201;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,90,FOLLOW_90_in_ruleXConstructorCall23050); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
                          
                    }

                    }
                    break;

            }

            otherlv_8=(Token)match(input,19,FOLLOW_19_in_ruleXConstructorCall23064); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getXConstructorCallAccess().getLeftParenthesisKeyword_4());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10267:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
            int alt204=3;
            alt204 = dfa204.predict(input);
            switch (alt204) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10267:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10267:2: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10267:3: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10279:1: (lv_arguments_9_0= ruleXShortClosure )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10280:3: lv_arguments_9_0= ruleXShortClosure
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_5_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXShortClosure_in_ruleXConstructorCall23126);
                    lv_arguments_9_0=ruleXShortClosure();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_9_0, 
                              		"XShortClosure");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10297:6: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10297:6: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10297:7: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10297:7: ( (lv_arguments_10_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10298:1: (lv_arguments_10_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10298:1: (lv_arguments_10_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10299:3: lv_arguments_10_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_5_1_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructorCall23154);
                    lv_arguments_10_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_10_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10315:2: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                    loop203:
                    do {
                        int alt203=2;
                        int LA203_0 = input.LA(1);

                        if ( (LA203_0==37) ) {
                            alt203=1;
                        }


                        switch (alt203) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10315:4: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
                    	    {
                    	    otherlv_11=(Token)match(input,37,FOLLOW_37_in_ruleXConstructorCall23167); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_5_1_1_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10319:1: ( (lv_arguments_12_0= ruleXExpression ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10320:1: (lv_arguments_12_0= ruleXExpression )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10320:1: (lv_arguments_12_0= ruleXExpression )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10321:3: lv_arguments_12_0= ruleXExpression
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_5_1_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXExpression_in_ruleXConstructorCall23188);
                    	    lv_arguments_12_0=ruleXExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"arguments",
                    	              		lv_arguments_12_0, 
                    	              		"XExpression");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop203;
                        }
                    } while (true);


                    }


                    }
                    break;

            }

            otherlv_13=(Token)match(input,23,FOLLOW_23_in_ruleXConstructorCall23205); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXConstructorCall"


    // $ANTLR start "entryRuleXBooleanLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10349:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
    public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXBooleanLiteral = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10350:2: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10351:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXBooleanLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral23241);
            iv_ruleXBooleanLiteral=ruleXBooleanLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXBooleanLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXBooleanLiteral23251); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXBooleanLiteral"


    // $ANTLR start "ruleXBooleanLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10358:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
    public final EObject ruleXBooleanLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_isTrue_2_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10361:28: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10362:1: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10362:1: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10362:2: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10362:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10363:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10368:2: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
            int alt205=2;
            int LA205_0 = input.LA(1);

            if ( (LA205_0==119) ) {
                alt205=1;
            }
            else if ( (LA205_0==120) ) {
                alt205=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 205, 0, input);

                throw nvae;
            }
            switch (alt205) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10368:4: otherlv_1= 'false'
                    {
                    otherlv_1=(Token)match(input,119,FOLLOW_119_in_ruleXBooleanLiteral23298); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10373:6: ( (lv_isTrue_2_0= 'true' ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10373:6: ( (lv_isTrue_2_0= 'true' ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10374:1: (lv_isTrue_2_0= 'true' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10374:1: (lv_isTrue_2_0= 'true' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10375:3: lv_isTrue_2_0= 'true'
                    {
                    lv_isTrue_2_0=(Token)match(input,120,FOLLOW_120_in_ruleXBooleanLiteral23322); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getXBooleanLiteralRule());
                      	        }
                             		setWithLastConsumed(current, "isTrue", true, "true");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXBooleanLiteral"


    // $ANTLR start "entryRuleXNullLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10396:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
    public final EObject entryRuleXNullLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXNullLiteral = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10397:2: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10398:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXNullLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral23372);
            iv_ruleXNullLiteral=ruleXNullLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXNullLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXNullLiteral23382); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXNullLiteral"


    // $ANTLR start "ruleXNullLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10405:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
    public final EObject ruleXNullLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10408:28: ( ( () otherlv_1= 'null' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10409:1: ( () otherlv_1= 'null' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10409:1: ( () otherlv_1= 'null' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10409:2: () otherlv_1= 'null'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10409:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10410:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,121,FOLLOW_121_in_ruleXNullLiteral23428); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXNullLiteral"


    // $ANTLR start "entryRuleXIntLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10427:1: entryRuleXIntLiteral returns [EObject current=null] : iv_ruleXIntLiteral= ruleXIntLiteral EOF ;
    public final EObject entryRuleXIntLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXIntLiteral = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10428:2: (iv_ruleXIntLiteral= ruleXIntLiteral EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10429:2: iv_ruleXIntLiteral= ruleXIntLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXIntLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXIntLiteral_in_entryRuleXIntLiteral23464);
            iv_ruleXIntLiteral=ruleXIntLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXIntLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXIntLiteral23474); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXIntLiteral"


    // $ANTLR start "ruleXIntLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10436:1: ruleXIntLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_INT ) ) ) ;
    public final EObject ruleXIntLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10439:28: ( ( () ( (lv_value_1_0= RULE_INT ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10440:1: ( () ( (lv_value_1_0= RULE_INT ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10440:1: ( () ( (lv_value_1_0= RULE_INT ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10440:2: () ( (lv_value_1_0= RULE_INT ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10440:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10441:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXIntLiteralAccess().getXIntLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10446:2: ( (lv_value_1_0= RULE_INT ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10447:1: (lv_value_1_0= RULE_INT )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10447:1: (lv_value_1_0= RULE_INT )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10448:3: lv_value_1_0= RULE_INT
            {
            lv_value_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleXIntLiteral23525); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_value_1_0, grammarAccess.getXIntLiteralAccess().getValueINTTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXIntLiteralRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"value",
                      		lv_value_1_0, 
                      		"INT");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXIntLiteral"


    // $ANTLR start "entryRuleXStringLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10472:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
    public final EObject entryRuleXStringLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXStringLiteral = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10473:2: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10474:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXStringLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral23566);
            iv_ruleXStringLiteral=ruleXStringLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXStringLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXStringLiteral23576); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXStringLiteral"


    // $ANTLR start "ruleXStringLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10481:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleXStringLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10484:28: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10485:1: ( () ( (lv_value_1_0= RULE_STRING ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10485:1: ( () ( (lv_value_1_0= RULE_STRING ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10485:2: () ( (lv_value_1_0= RULE_STRING ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10485:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10486:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
                          current);
                  
            }

            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10491:2: ( (lv_value_1_0= RULE_STRING ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10492:1: (lv_value_1_0= RULE_STRING )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10492:1: (lv_value_1_0= RULE_STRING )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10493:3: lv_value_1_0= RULE_STRING
            {
            lv_value_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleXStringLiteral23627); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getXStringLiteralRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"value",
                      		lv_value_1_0, 
                      		"STRING");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXStringLiteral"


    // $ANTLR start "entryRuleXTypeLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10517:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
    public final EObject entryRuleXTypeLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXTypeLiteral = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10518:2: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10519:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXTypeLiteralRule()); 
            }
            pushFollow(FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral23668);
            iv_ruleXTypeLiteral=ruleXTypeLiteral();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXTypeLiteral; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXTypeLiteral23678); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXTypeLiteral"


    // $ANTLR start "ruleXTypeLiteral"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10526:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')' ) ;
    public final EObject ruleXTypeLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10529:28: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10530:1: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10530:1: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10530:2: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) otherlv_4= ')'
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10530:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10531:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,122,FOLLOW_122_in_ruleXTypeLiteral23724); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleXTypeLiteral23736); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10544:1: ( ( ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10545:1: ( ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10545:1: ( ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10546:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getXTypeLiteralRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXTypeLiteral23759);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleXTypeLiteral23771); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXTypeLiteral"


    // $ANTLR start "entryRuleXThrowExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10571:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
    public final EObject entryRuleXThrowExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXThrowExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10572:2: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10573:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXThrowExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression23807);
            iv_ruleXThrowExpression=ruleXThrowExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXThrowExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXThrowExpression23817); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXThrowExpression"


    // $ANTLR start "ruleXThrowExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10580:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
    public final EObject ruleXThrowExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_expression_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10583:28: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10584:1: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10584:1: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10584:2: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10584:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10585:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,123,FOLLOW_123_in_ruleXThrowExpression23863); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10594:1: ( (lv_expression_2_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10595:1: (lv_expression_2_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10595:1: (lv_expression_2_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10596:3: lv_expression_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXThrowExpression23884);
            lv_expression_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXThrowExpression"


    // $ANTLR start "entryRuleXReturnExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10620:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
    public final EObject entryRuleXReturnExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXReturnExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10621:2: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10622:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXReturnExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression23920);
            iv_ruleXReturnExpression=ruleXReturnExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXReturnExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXReturnExpression23930); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXReturnExpression"


    // $ANTLR start "ruleXReturnExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10629:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
    public final EObject ruleXReturnExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_expression_2_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10632:28: ( ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10633:1: ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10633:1: ( () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10633:2: () otherlv_1= 'return' ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10633:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10634:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,124,FOLLOW_124_in_ruleXReturnExpression23976); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10643:1: ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )?
            int alt206=2;
            alt206 = dfa206.predict(input);
            switch (alt206) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10643:2: ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10648:1: (lv_expression_2_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10649:3: lv_expression_2_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXReturnExpression24007);
                    lv_expression_2_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"expression",
                              		lv_expression_2_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXReturnExpression"


    // $ANTLR start "entryRuleXTryCatchFinallyExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10673:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
    public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXTryCatchFinallyExpression = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10674:2: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10675:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); 
            }
            pushFollow(FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression24044);
            iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXTryCatchFinallyExpression; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression24054); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXTryCatchFinallyExpression"


    // $ANTLR start "ruleXTryCatchFinallyExpression"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10682:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
    public final EObject ruleXTryCatchFinallyExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_expression_2_0 = null;

        EObject lv_catchClauses_3_0 = null;

        EObject lv_finallyExpression_5_0 = null;

        EObject lv_finallyExpression_7_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10685:28: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10686:1: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10686:1: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10686:2: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10686:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10687:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,125,FOLLOW_125_in_ruleXTryCatchFinallyExpression24100); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10696:1: ( (lv_expression_2_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10697:1: (lv_expression_2_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10697:1: (lv_expression_2_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10698:3: lv_expression_2_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression24121);
            lv_expression_2_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_2_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10714:2: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
            int alt209=2;
            int LA209_0 = input.LA(1);

            if ( (LA209_0==127) ) {
                alt209=1;
            }
            else if ( (LA209_0==126) ) {
                alt209=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 209, 0, input);

                throw nvae;
            }
            switch (alt209) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10714:3: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10714:3: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10714:4: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10714:4: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
                    int cnt207=0;
                    loop207:
                    do {
                        int alt207=2;
                        int LA207_0 = input.LA(1);

                        if ( (LA207_0==127) ) {
                            int LA207_2 = input.LA(2);

                            if ( (synpred39_InternalUnicornLanguageDefinition()) ) {
                                alt207=1;
                            }


                        }


                        switch (alt207) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10714:5: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10716:1: (lv_catchClauses_3_0= ruleXCatchClause )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10717:3: lv_catchClauses_3_0= ruleXCatchClause
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleXCatchClause_in_ruleXTryCatchFinallyExpression24151);
                    	    lv_catchClauses_3_0=ruleXCatchClause();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"catchClauses",
                    	              		lv_catchClauses_3_0, 
                    	              		"XCatchClause");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt207 >= 1 ) break loop207;
                    	    if (state.backtracking>0) {state.failed=true; return current;}
                                EarlyExitException eee =
                                    new EarlyExitException(207, input);
                                throw eee;
                        }
                        cnt207++;
                    } while (true);

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10733:3: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                    int alt208=2;
                    int LA208_0 = input.LA(1);

                    if ( (LA208_0==126) ) {
                        int LA208_1 = input.LA(2);

                        if ( (synpred40_InternalUnicornLanguageDefinition()) ) {
                            alt208=1;
                        }
                    }
                    switch (alt208) {
                        case 1 :
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10733:4: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10733:4: ( ( 'finally' )=>otherlv_4= 'finally' )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10733:5: ( 'finally' )=>otherlv_4= 'finally'
                            {
                            otherlv_4=(Token)match(input,126,FOLLOW_126_in_ruleXTryCatchFinallyExpression24173); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
                                  
                            }

                            }

                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10738:2: ( (lv_finallyExpression_5_0= ruleXExpression ) )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10739:1: (lv_finallyExpression_5_0= ruleXExpression )
                            {
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10739:1: (lv_finallyExpression_5_0= ruleXExpression )
                            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10740:3: lv_finallyExpression_5_0= ruleXExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression24195);
                            lv_finallyExpression_5_0=ruleXExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"finallyExpression",
                                      		lv_finallyExpression_5_0, 
                                      		"XExpression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10757:6: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10757:6: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10757:8: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
                    {
                    otherlv_6=(Token)match(input,126,FOLLOW_126_in_ruleXTryCatchFinallyExpression24217); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10761:1: ( (lv_finallyExpression_7_0= ruleXExpression ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10762:1: (lv_finallyExpression_7_0= ruleXExpression )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10762:1: (lv_finallyExpression_7_0= ruleXExpression )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10763:3: lv_finallyExpression_7_0= ruleXExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression24238);
                    lv_finallyExpression_7_0=ruleXExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"finallyExpression",
                              		lv_finallyExpression_7_0, 
                              		"XExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXTryCatchFinallyExpression"


    // $ANTLR start "entryRuleXCatchClause"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10787:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
    public final EObject entryRuleXCatchClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXCatchClause = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10788:2: (iv_ruleXCatchClause= ruleXCatchClause EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10789:2: iv_ruleXCatchClause= ruleXCatchClause EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXCatchClauseRule()); 
            }
            pushFollow(FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause24276);
            iv_ruleXCatchClause=ruleXCatchClause();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXCatchClause; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXCatchClause24286); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXCatchClause"


    // $ANTLR start "ruleXCatchClause"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10796:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
    public final EObject ruleXCatchClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_declaredParam_2_0 = null;

        EObject lv_expression_4_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10799:28: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10800:1: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10800:1: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10800:2: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10800:2: ( ( 'catch' )=>otherlv_0= 'catch' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10800:3: ( 'catch' )=>otherlv_0= 'catch'
            {
            otherlv_0=(Token)match(input,127,FOLLOW_127_in_ruleXCatchClause24331); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
                  
            }

            }

            otherlv_1=(Token)match(input,19,FOLLOW_19_in_ruleXCatchClause24344); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10809:1: ( (lv_declaredParam_2_0= ruleJvmFormalParameter ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10810:1: (lv_declaredParam_2_0= ruleJvmFormalParameter )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10810:1: (lv_declaredParam_2_0= ruleJvmFormalParameter )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10811:3: lv_declaredParam_2_0= ruleJvmFormalParameter
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmFormalParameter_in_ruleXCatchClause24365);
            lv_declaredParam_2_0=ruleJvmFormalParameter();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
              	        }
                     		set(
                     			current, 
                     			"declaredParam",
                      		lv_declaredParam_2_0, 
                      		"JvmFormalParameter");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,23,FOLLOW_23_in_ruleXCatchClause24377); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10831:1: ( (lv_expression_4_0= ruleXExpression ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10832:1: (lv_expression_4_0= ruleXExpression )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10832:1: (lv_expression_4_0= ruleXExpression )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10833:3: lv_expression_4_0= ruleXExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleXExpression_in_ruleXCatchClause24398);
            lv_expression_4_0=ruleXExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
              	        }
                     		set(
                     			current, 
                     			"expression",
                      		lv_expression_4_0, 
                      		"XExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXCatchClause"


    // $ANTLR start "entryRuleQualifiedName"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10857:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10858:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10859:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName24435);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedName.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName24446); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10866:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;

        AntlrDatatypeRuleToken this_ValidID_2 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10869:28: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10870:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10870:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10871:5: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
                  
            }
            pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName24493);
            this_ValidID_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_ValidID_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                      afterParserOrEnumRuleCall();
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10881:1: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            loop210:
            do {
                int alt210=2;
                int LA210_0 = input.LA(1);

                if ( (LA210_0==102) ) {
                    int LA210_2 = input.LA(2);

                    if ( (LA210_2==RULE_ID) ) {
                        int LA210_3 = input.LA(3);

                        if ( (synpred42_InternalUnicornLanguageDefinition()) ) {
                            alt210=1;
                        }


                    }


                }


                switch (alt210) {
            	case 1 :
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10881:2: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
            	    {
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10881:2: ( ( '.' )=>kw= '.' )
            	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10881:3: ( '.' )=>kw= '.'
            	    {
            	    kw=(Token)match(input,102,FOLLOW_102_in_ruleQualifiedName24521); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	          
            	    }

            	    }

            	    if ( state.backtracking==0 ) {
            	       
            	              newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
            	          
            	    }
            	    pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName24544);
            	    this_ValidID_2=ruleValidID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		current.merge(this_ValidID_2);
            	          
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	              afterParserOrEnumRuleCall();
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop210;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleJvmTypeReference"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10908:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
    public final EObject entryRuleJvmTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmTypeReference = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10909:2: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10910:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference24591);
            iv_ruleJvmTypeReference=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmTypeReference24601); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmTypeReference"


    // $ANTLR start "ruleJvmTypeReference"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10917:1: ruleJvmTypeReference returns [EObject current=null] : (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference | this_XFunctionTypeRef_1= ruleXFunctionTypeRef ) ;
    public final EObject ruleJvmTypeReference() throws RecognitionException {
        EObject current = null;

        EObject this_JvmParameterizedTypeReference_0 = null;

        EObject this_XFunctionTypeRef_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10920:28: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference | this_XFunctionTypeRef_1= ruleXFunctionTypeRef ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10921:1: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference | this_XFunctionTypeRef_1= ruleXFunctionTypeRef )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10921:1: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference | this_XFunctionTypeRef_1= ruleXFunctionTypeRef )
            int alt211=2;
            int LA211_0 = input.LA(1);

            if ( (LA211_0==RULE_ID) ) {
                alt211=1;
            }
            else if ( (LA211_0==19||LA211_0==128) ) {
                alt211=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 211, 0, input);

                throw nvae;
            }
            switch (alt211) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10922:5: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_ruleJvmTypeReference24648);
                    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_JvmParameterizedTypeReference_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10932:5: this_XFunctionTypeRef_1= ruleXFunctionTypeRef
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleXFunctionTypeRef_in_ruleJvmTypeReference24675);
                    this_XFunctionTypeRef_1=ruleXFunctionTypeRef();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_XFunctionTypeRef_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmTypeReference"


    // $ANTLR start "entryRuleXFunctionTypeRef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10948:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
    public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleXFunctionTypeRef = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10949:2: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10950:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); 
            }
            pushFollow(FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef24710);
            iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleXFunctionTypeRef; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleXFunctionTypeRef24720); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleXFunctionTypeRef"


    // $ANTLR start "ruleXFunctionTypeRef"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10957:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleXFunctionTypeRef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        EObject lv_paramTypes_1_0 = null;

        EObject lv_paramTypes_3_0 = null;

        EObject lv_returnType_6_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10960:28: ( ( (otherlv_0= '(' ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10961:1: ( (otherlv_0= '(' ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10961:1: ( (otherlv_0= '(' ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10961:2: (otherlv_0= '(' ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10961:2: (otherlv_0= '(' ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* otherlv_4= ')' )?
            int alt213=2;
            int LA213_0 = input.LA(1);

            if ( (LA213_0==19) ) {
                alt213=1;
            }
            switch (alt213) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10961:4: otherlv_0= '(' ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* otherlv_4= ')'
                    {
                    otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleXFunctionTypeRef24758); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
                          
                    }
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10965:1: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10966:1: (lv_paramTypes_1_0= ruleJvmTypeReference )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10966:1: (lv_paramTypes_1_0= ruleJvmTypeReference )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10967:3: lv_paramTypes_1_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef24779);
                    lv_paramTypes_1_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
                      	        }
                             		add(
                             			current, 
                             			"paramTypes",
                              		lv_paramTypes_1_0, 
                              		"JvmTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10983:2: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                    loop212:
                    do {
                        int alt212=2;
                        int LA212_0 = input.LA(1);

                        if ( (LA212_0==37) ) {
                            alt212=1;
                        }


                        switch (alt212) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10983:4: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                    	    {
                    	    otherlv_2=(Token)match(input,37,FOLLOW_37_in_ruleXFunctionTypeRef24792); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10987:1: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10988:1: (lv_paramTypes_3_0= ruleJvmTypeReference )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10988:1: (lv_paramTypes_3_0= ruleJvmTypeReference )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10989:3: lv_paramTypes_3_0= ruleJvmTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef24813);
                    	    lv_paramTypes_3_0=ruleJvmTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"paramTypes",
                    	              		lv_paramTypes_3_0, 
                    	              		"JvmTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop212;
                        }
                    } while (true);

                    otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleXFunctionTypeRef24827); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_3());
                          
                    }

                    }
                    break;

            }

            otherlv_5=(Token)match(input,128,FOLLOW_128_in_ruleXFunctionTypeRef24841); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11013:1: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11014:1: (lv_returnType_6_0= ruleJvmTypeReference )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11014:1: (lv_returnType_6_0= ruleJvmTypeReference )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11015:3: lv_returnType_6_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef24862);
            lv_returnType_6_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
              	        }
                     		set(
                     			current, 
                     			"returnType",
                      		lv_returnType_6_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleXFunctionTypeRef"


    // $ANTLR start "entryRuleJvmParameterizedTypeReference"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11039:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
    public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmParameterizedTypeReference = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11040:2: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11041:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference24898);
            iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmParameterizedTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference24908); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmParameterizedTypeReference"


    // $ANTLR start "ruleJvmParameterizedTypeReference"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11048:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ) ;
    public final EObject ruleJvmParameterizedTypeReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_arguments_2_0 = null;

        EObject lv_arguments_4_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11051:28: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11052:1: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11052:1: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11052:2: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11052:2: ( ( ruleQualifiedName ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11053:1: ( ruleQualifiedName )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11053:1: ( ruleQualifiedName )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11054:3: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
              	        }
                      
            }
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleJvmParameterizedTypeReference24956);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11067:2: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
            int alt215=2;
            alt215 = dfa215.predict(input);
            switch (alt215) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11067:3: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11067:3: ( ( '<' )=>otherlv_1= '<' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11067:4: ( '<' )=>otherlv_1= '<'
                    {
                    otherlv_1=(Token)match(input,91,FOLLOW_91_in_ruleJvmParameterizedTypeReference24977); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
                          
                    }

                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11072:2: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11073:1: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11073:1: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11074:3: lv_arguments_2_0= ruleJvmArgumentTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference24999);
                    lv_arguments_2_0=ruleJvmArgumentTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_2_0, 
                              		"JvmArgumentTypeReference");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11090:2: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
                    loop214:
                    do {
                        int alt214=2;
                        int LA214_0 = input.LA(1);

                        if ( (LA214_0==37) ) {
                            alt214=1;
                        }


                        switch (alt214) {
                    	case 1 :
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11090:4: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                    	    {
                    	    otherlv_3=(Token)match(input,37,FOLLOW_37_in_ruleJvmParameterizedTypeReference25012); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
                    	          
                    	    }
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11094:1: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11095:1: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                    	    {
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11095:1: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                    	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11096:3: lv_arguments_4_0= ruleJvmArgumentTypeReference
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference25033);
                    	    lv_arguments_4_0=ruleJvmArgumentTypeReference();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"arguments",
                    	              		lv_arguments_4_0, 
                    	              		"JvmArgumentTypeReference");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop214;
                        }
                    } while (true);

                    otherlv_5=(Token)match(input,90,FOLLOW_90_in_ruleJvmParameterizedTypeReference25047); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmParameterizedTypeReference"


    // $ANTLR start "entryRuleJvmArgumentTypeReference"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11124:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
    public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmArgumentTypeReference = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11125:2: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11126:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference25085);
            iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmArgumentTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference25095); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmArgumentTypeReference"


    // $ANTLR start "ruleJvmArgumentTypeReference"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11133:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
    public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
        EObject current = null;

        EObject this_JvmTypeReference_0 = null;

        EObject this_JvmWildcardTypeReference_1 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11136:28: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11137:1: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11137:1: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
            int alt216=2;
            int LA216_0 = input.LA(1);

            if ( (LA216_0==RULE_ID||LA216_0==19||LA216_0==128) ) {
                alt216=1;
            }
            else if ( (LA216_0==129) ) {
                alt216=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 216, 0, input);

                throw nvae;
            }
            switch (alt216) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11138:5: this_JvmTypeReference_0= ruleJvmTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmArgumentTypeReference25142);
                    this_JvmTypeReference_0=ruleJvmTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_JvmTypeReference_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11148:5: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleJvmWildcardTypeReference_in_ruleJvmArgumentTypeReference25169);
                    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_JvmWildcardTypeReference_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmArgumentTypeReference"


    // $ANTLR start "entryRuleJvmWildcardTypeReference"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11164:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
    public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmWildcardTypeReference = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11165:2: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11166:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference25204);
            iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmWildcardTypeReference; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference25214); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmWildcardTypeReference"


    // $ANTLR start "ruleJvmWildcardTypeReference"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11173:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? ) ;
    public final EObject ruleJvmWildcardTypeReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_constraints_2_0 = null;

        EObject lv_constraints_3_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11176:28: ( ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11177:1: ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11177:1: ( () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )? )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11177:2: () otherlv_1= '?' ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )?
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11177:2: ()
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11178:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,129,FOLLOW_129_in_ruleJvmWildcardTypeReference25260); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11187:1: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) | ( (lv_constraints_3_0= ruleJvmLowerBound ) ) )?
            int alt217=3;
            int LA217_0 = input.LA(1);

            if ( (LA217_0==48) ) {
                alt217=1;
            }
            else if ( (LA217_0==117) ) {
                alt217=2;
            }
            switch (alt217) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11187:2: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11187:2: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11188:1: (lv_constraints_2_0= ruleJvmUpperBound )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11188:1: (lv_constraints_2_0= ruleJvmUpperBound )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11189:3: lv_constraints_2_0= ruleJvmUpperBound
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmUpperBound_in_ruleJvmWildcardTypeReference25282);
                    lv_constraints_2_0=ruleJvmUpperBound();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
                      	        }
                             		add(
                             			current, 
                             			"constraints",
                              		lv_constraints_2_0, 
                              		"JvmUpperBound");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11206:6: ( (lv_constraints_3_0= ruleJvmLowerBound ) )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11206:6: ( (lv_constraints_3_0= ruleJvmLowerBound ) )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11207:1: (lv_constraints_3_0= ruleJvmLowerBound )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11207:1: (lv_constraints_3_0= ruleJvmLowerBound )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11208:3: lv_constraints_3_0= ruleJvmLowerBound
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleJvmLowerBound_in_ruleJvmWildcardTypeReference25309);
                    lv_constraints_3_0=ruleJvmLowerBound();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
                      	        }
                             		add(
                             			current, 
                             			"constraints",
                              		lv_constraints_3_0, 
                              		"JvmLowerBound");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmWildcardTypeReference"


    // $ANTLR start "entryRuleJvmUpperBound"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11232:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
    public final EObject entryRuleJvmUpperBound() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmUpperBound = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11233:2: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11234:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmUpperBoundRule()); 
            }
            pushFollow(FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound25347);
            iv_ruleJvmUpperBound=ruleJvmUpperBound();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmUpperBound; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBound25357); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmUpperBound"


    // $ANTLR start "ruleJvmUpperBound"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11241:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleJvmUpperBound() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11244:28: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11245:1: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11245:1: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11245:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,48,FOLLOW_48_in_ruleJvmUpperBound25394); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11249:1: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11250:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11250:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11251:3: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBound25415);
            lv_typeReference_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
              	        }
                     		set(
                     			current, 
                     			"typeReference",
                      		lv_typeReference_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmUpperBound"


    // $ANTLR start "entryRuleJvmUpperBoundAnded"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11275:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
    public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmUpperBoundAnded = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11276:2: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11277:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); 
            }
            pushFollow(FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded25451);
            iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmUpperBoundAnded; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded25461); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmUpperBoundAnded"


    // $ANTLR start "ruleJvmUpperBoundAnded"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11284:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11287:28: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11288:1: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11288:1: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11288:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,130,FOLLOW_130_in_ruleJvmUpperBoundAnded25498); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11292:1: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11293:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11293:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11294:3: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBoundAnded25519);
            lv_typeReference_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
              	        }
                     		set(
                     			current, 
                     			"typeReference",
                      		lv_typeReference_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmUpperBoundAnded"


    // $ANTLR start "entryRuleJvmLowerBound"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11318:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
    public final EObject entryRuleJvmLowerBound() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmLowerBound = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11319:2: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11320:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmLowerBoundRule()); 
            }
            pushFollow(FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound25555);
            iv_ruleJvmLowerBound=ruleJvmLowerBound();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmLowerBound; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmLowerBound25565); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJvmLowerBound"


    // $ANTLR start "ruleJvmLowerBound"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11327:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
    public final EObject ruleJvmLowerBound() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_typeReference_1_0 = null;


         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11330:28: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11331:1: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11331:1: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11331:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            {
            otherlv_0=(Token)match(input,117,FOLLOW_117_in_ruleJvmLowerBound25602); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
                  
            }
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11335:1: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11336:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11336:1: (lv_typeReference_1_0= ruleJvmTypeReference )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11337:3: lv_typeReference_1_0= ruleJvmTypeReference
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleJvmLowerBound25623);
            lv_typeReference_1_0=ruleJvmTypeReference();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
              	        }
                     		set(
                     			current, 
                     			"typeReference",
                      		lv_typeReference_1_0, 
                      		"JvmTypeReference");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJvmLowerBound"


    // $ANTLR start "entryRuleValidID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11363:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
    public final String entryRuleValidID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleValidID = null;


        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11364:2: (iv_ruleValidID= ruleValidID EOF )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11365:2: iv_ruleValidID= ruleValidID EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getValidIDRule()); 
            }
            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID25662);
            iv_ruleValidID=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleValidID.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID25673); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValidID"


    // $ANTLR start "ruleValidID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11372:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
    public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;

         enterRule(); 
            
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11375:28: (this_ID_0= RULE_ID )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11376:5: this_ID_0= RULE_ID
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID25712); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_ID_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValidID"


    // $ANTLR start "ruleTagEntryDefExpParameterID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11391:1: ruleTagEntryDefExpParameterID returns [Enumerator current=null] : ( (enumLiteral_0= 'visile' ) | (enumLiteral_1= 'editable' ) | (enumLiteral_2= 'multiline' ) | (enumLiteral_3= 'description' ) | (enumLiteral_4= 'category' ) | (enumLiteral_5= 'text' ) | (enumLiteral_6= 'notify' ) | (enumLiteral_7= 'min' ) | (enumLiteral_8= 'max' ) ) ;
    public final Enumerator ruleTagEntryDefExpParameterID() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;
        Token enumLiteral_6=null;
        Token enumLiteral_7=null;
        Token enumLiteral_8=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11393:28: ( ( (enumLiteral_0= 'visile' ) | (enumLiteral_1= 'editable' ) | (enumLiteral_2= 'multiline' ) | (enumLiteral_3= 'description' ) | (enumLiteral_4= 'category' ) | (enumLiteral_5= 'text' ) | (enumLiteral_6= 'notify' ) | (enumLiteral_7= 'min' ) | (enumLiteral_8= 'max' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11394:1: ( (enumLiteral_0= 'visile' ) | (enumLiteral_1= 'editable' ) | (enumLiteral_2= 'multiline' ) | (enumLiteral_3= 'description' ) | (enumLiteral_4= 'category' ) | (enumLiteral_5= 'text' ) | (enumLiteral_6= 'notify' ) | (enumLiteral_7= 'min' ) | (enumLiteral_8= 'max' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11394:1: ( (enumLiteral_0= 'visile' ) | (enumLiteral_1= 'editable' ) | (enumLiteral_2= 'multiline' ) | (enumLiteral_3= 'description' ) | (enumLiteral_4= 'category' ) | (enumLiteral_5= 'text' ) | (enumLiteral_6= 'notify' ) | (enumLiteral_7= 'min' ) | (enumLiteral_8= 'max' ) )
            int alt218=9;
            switch ( input.LA(1) ) {
            case 131:
                {
                alt218=1;
                }
                break;
            case 132:
                {
                alt218=2;
                }
                break;
            case 133:
                {
                alt218=3;
                }
                break;
            case 134:
                {
                alt218=4;
                }
                break;
            case 135:
                {
                alt218=5;
                }
                break;
            case 16:
                {
                alt218=6;
                }
                break;
            case 136:
                {
                alt218=7;
                }
                break;
            case 137:
                {
                alt218=8;
                }
                break;
            case 138:
                {
                alt218=9;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 218, 0, input);

                throw nvae;
            }

            switch (alt218) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11394:2: (enumLiteral_0= 'visile' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11394:2: (enumLiteral_0= 'visile' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11394:4: enumLiteral_0= 'visile'
                    {
                    enumLiteral_0=(Token)match(input,131,FOLLOW_131_in_ruleTagEntryDefExpParameterID25770); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getTagEntryDefExpParameterIDAccess().getVISIBLEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getTagEntryDefExpParameterIDAccess().getVISIBLEEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11400:6: (enumLiteral_1= 'editable' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11400:6: (enumLiteral_1= 'editable' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11400:8: enumLiteral_1= 'editable'
                    {
                    enumLiteral_1=(Token)match(input,132,FOLLOW_132_in_ruleTagEntryDefExpParameterID25787); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getTagEntryDefExpParameterIDAccess().getEDITABLEEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getTagEntryDefExpParameterIDAccess().getEDITABLEEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11406:6: (enumLiteral_2= 'multiline' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11406:6: (enumLiteral_2= 'multiline' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11406:8: enumLiteral_2= 'multiline'
                    {
                    enumLiteral_2=(Token)match(input,133,FOLLOW_133_in_ruleTagEntryDefExpParameterID25804); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getTagEntryDefExpParameterIDAccess().getMULTILINEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_2, grammarAccess.getTagEntryDefExpParameterIDAccess().getMULTILINEEnumLiteralDeclaration_2()); 
                          
                    }

                    }


                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11412:6: (enumLiteral_3= 'description' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11412:6: (enumLiteral_3= 'description' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11412:8: enumLiteral_3= 'description'
                    {
                    enumLiteral_3=(Token)match(input,134,FOLLOW_134_in_ruleTagEntryDefExpParameterID25821); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getTagEntryDefExpParameterIDAccess().getDESCRIPTIONEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_3, grammarAccess.getTagEntryDefExpParameterIDAccess().getDESCRIPTIONEnumLiteralDeclaration_3()); 
                          
                    }

                    }


                    }
                    break;
                case 5 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11418:6: (enumLiteral_4= 'category' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11418:6: (enumLiteral_4= 'category' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11418:8: enumLiteral_4= 'category'
                    {
                    enumLiteral_4=(Token)match(input,135,FOLLOW_135_in_ruleTagEntryDefExpParameterID25838); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getTagEntryDefExpParameterIDAccess().getCATEGORYEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_4, grammarAccess.getTagEntryDefExpParameterIDAccess().getCATEGORYEnumLiteralDeclaration_4()); 
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11424:6: (enumLiteral_5= 'text' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11424:6: (enumLiteral_5= 'text' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11424:8: enumLiteral_5= 'text'
                    {
                    enumLiteral_5=(Token)match(input,16,FOLLOW_16_in_ruleTagEntryDefExpParameterID25855); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getTagEntryDefExpParameterIDAccess().getTEXTEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_5, grammarAccess.getTagEntryDefExpParameterIDAccess().getTEXTEnumLiteralDeclaration_5()); 
                          
                    }

                    }


                    }
                    break;
                case 7 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11430:6: (enumLiteral_6= 'notify' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11430:6: (enumLiteral_6= 'notify' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11430:8: enumLiteral_6= 'notify'
                    {
                    enumLiteral_6=(Token)match(input,136,FOLLOW_136_in_ruleTagEntryDefExpParameterID25872); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getTagEntryDefExpParameterIDAccess().getNOTIFYEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_6, grammarAccess.getTagEntryDefExpParameterIDAccess().getNOTIFYEnumLiteralDeclaration_6()); 
                          
                    }

                    }


                    }
                    break;
                case 8 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11436:6: (enumLiteral_7= 'min' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11436:6: (enumLiteral_7= 'min' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11436:8: enumLiteral_7= 'min'
                    {
                    enumLiteral_7=(Token)match(input,137,FOLLOW_137_in_ruleTagEntryDefExpParameterID25889); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getTagEntryDefExpParameterIDAccess().getMINEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_7, grammarAccess.getTagEntryDefExpParameterIDAccess().getMINEnumLiteralDeclaration_7()); 
                          
                    }

                    }


                    }
                    break;
                case 9 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11442:6: (enumLiteral_8= 'max' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11442:6: (enumLiteral_8= 'max' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11442:8: enumLiteral_8= 'max'
                    {
                    enumLiteral_8=(Token)match(input,138,FOLLOW_138_in_ruleTagEntryDefExpParameterID25906); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getTagEntryDefExpParameterIDAccess().getMAXEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_8, grammarAccess.getTagEntryDefExpParameterIDAccess().getMAXEnumLiteralDeclaration_8()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTagEntryDefExpParameterID"


    // $ANTLR start "ruleLayoutExpParameterNameID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11452:1: ruleLayoutExpParameterNameID returns [Enumerator current=null] : (enumLiteral_0= 'primary' ) ;
    public final Enumerator ruleLayoutExpParameterNameID() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11454:28: ( (enumLiteral_0= 'primary' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11455:1: (enumLiteral_0= 'primary' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11455:1: (enumLiteral_0= 'primary' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11455:3: enumLiteral_0= 'primary'
            {
            enumLiteral_0=(Token)match(input,139,FOLLOW_139_in_ruleLayoutExpParameterNameID25950); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current = grammarAccess.getLayoutExpParameterNameIDAccess().getPRIMARYEnumLiteralDeclaration().getEnumLiteral().getInstance();
                      newLeafNode(enumLiteral_0, grammarAccess.getLayoutExpParameterNameIDAccess().getPRIMARYEnumLiteralDeclaration()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLayoutExpParameterNameID"


    // $ANTLR start "ruleToolViewExpNameID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11465:1: ruleToolViewExpNameID returns [Enumerator current=null] : (enumLiteral_0= 'primary' ) ;
    public final Enumerator ruleToolViewExpNameID() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11467:28: ( (enumLiteral_0= 'primary' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11468:1: (enumLiteral_0= 'primary' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11468:1: (enumLiteral_0= 'primary' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11468:3: enumLiteral_0= 'primary'
            {
            enumLiteral_0=(Token)match(input,139,FOLLOW_139_in_ruleToolViewExpNameID25993); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current = grammarAccess.getToolViewExpNameIDAccess().getPRIMARYEnumLiteralDeclaration().getEnumLiteral().getInstance();
                      newLeafNode(enumLiteral_0, grammarAccess.getToolViewExpNameIDAccess().getPRIMARYEnumLiteralDeclaration()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleToolViewExpNameID"


    // $ANTLR start "ruleElementFigureExpNameID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11478:1: ruleElementFigureExpNameID returns [Enumerator current=null] : ( (enumLiteral_0= 'resizable' ) | (enumLiteral_1= 'primary' ) ) ;
    public final Enumerator ruleElementFigureExpNameID() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11480:28: ( ( (enumLiteral_0= 'resizable' ) | (enumLiteral_1= 'primary' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11481:1: ( (enumLiteral_0= 'resizable' ) | (enumLiteral_1= 'primary' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11481:1: ( (enumLiteral_0= 'resizable' ) | (enumLiteral_1= 'primary' ) )
            int alt219=2;
            int LA219_0 = input.LA(1);

            if ( (LA219_0==140) ) {
                alt219=1;
            }
            else if ( (LA219_0==139) ) {
                alt219=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 219, 0, input);

                throw nvae;
            }
            switch (alt219) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11481:2: (enumLiteral_0= 'resizable' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11481:2: (enumLiteral_0= 'resizable' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11481:4: enumLiteral_0= 'resizable'
                    {
                    enumLiteral_0=(Token)match(input,140,FOLLOW_140_in_ruleElementFigureExpNameID26037); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getElementFigureExpNameIDAccess().getRESIZABLEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getElementFigureExpNameIDAccess().getRESIZABLEEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11487:6: (enumLiteral_1= 'primary' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11487:6: (enumLiteral_1= 'primary' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11487:8: enumLiteral_1= 'primary'
                    {
                    enumLiteral_1=(Token)match(input,139,FOLLOW_139_in_ruleElementFigureExpNameID26054); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getElementFigureExpNameIDAccess().getPRIMARYEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getElementFigureExpNameIDAccess().getPRIMARYEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElementFigureExpNameID"


    // $ANTLR start "ruleDockParameterNameID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11497:1: ruleDockParameterNameID returns [Enumerator current=null] : (enumLiteral_0= 'dock' ) ;
    public final Enumerator ruleDockParameterNameID() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11499:28: ( (enumLiteral_0= 'dock' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11500:1: (enumLiteral_0= 'dock' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11500:1: (enumLiteral_0= 'dock' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11500:3: enumLiteral_0= 'dock'
            {
            enumLiteral_0=(Token)match(input,141,FOLLOW_141_in_ruleDockParameterNameID26098); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current = grammarAccess.getDockParameterNameIDAccess().getDOCKEnumLiteralDeclaration().getEnumLiteral().getInstance();
                      newLeafNode(enumLiteral_0, grammarAccess.getDockParameterNameIDAccess().getDOCKEnumLiteralDeclaration()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDockParameterNameID"


    // $ANTLR start "ruleAnchorNameID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11510:1: ruleAnchorNameID returns [Enumerator current=null] : (enumLiteral_0= 'anchor' ) ;
    public final Enumerator ruleAnchorNameID() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11512:28: ( (enumLiteral_0= 'anchor' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11513:1: (enumLiteral_0= 'anchor' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11513:1: (enumLiteral_0= 'anchor' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11513:3: enumLiteral_0= 'anchor'
            {
            enumLiteral_0=(Token)match(input,142,FOLLOW_142_in_ruleAnchorNameID26141); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current = grammarAccess.getAnchorNameIDAccess().getANCHOREnumLiteralDeclaration().getEnumLiteral().getInstance();
                      newLeafNode(enumLiteral_0, grammarAccess.getAnchorNameIDAccess().getANCHOREnumLiteralDeclaration()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAnchorNameID"


    // $ANTLR start "ruleLocationNameID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11523:1: ruleLocationNameID returns [Enumerator current=null] : (enumLiteral_0= 'location' ) ;
    public final Enumerator ruleLocationNameID() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11525:28: ( (enumLiteral_0= 'location' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11526:1: (enumLiteral_0= 'location' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11526:1: (enumLiteral_0= 'location' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11526:3: enumLiteral_0= 'location'
            {
            enumLiteral_0=(Token)match(input,143,FOLLOW_143_in_ruleLocationNameID26184); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current = grammarAccess.getLocationNameIDAccess().getLOCATIONEnumLiteralDeclaration().getEnumLiteral().getInstance();
                      newLeafNode(enumLiteral_0, grammarAccess.getLocationNameIDAccess().getLOCATIONEnumLiteralDeclaration()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLocationNameID"


    // $ANTLR start "ruleBoundParameterNameID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11536:1: ruleBoundParameterNameID returns [Enumerator current=null] : ( (enumLiteral_0= 'size' ) | (enumLiteral_1= 'margin' ) | (enumLiteral_2= 'position' ) | (enumLiteral_3= 'bound' ) ) ;
    public final Enumerator ruleBoundParameterNameID() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11538:28: ( ( (enumLiteral_0= 'size' ) | (enumLiteral_1= 'margin' ) | (enumLiteral_2= 'position' ) | (enumLiteral_3= 'bound' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11539:1: ( (enumLiteral_0= 'size' ) | (enumLiteral_1= 'margin' ) | (enumLiteral_2= 'position' ) | (enumLiteral_3= 'bound' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11539:1: ( (enumLiteral_0= 'size' ) | (enumLiteral_1= 'margin' ) | (enumLiteral_2= 'position' ) | (enumLiteral_3= 'bound' ) )
            int alt220=4;
            switch ( input.LA(1) ) {
            case 144:
                {
                alt220=1;
                }
                break;
            case 145:
                {
                alt220=2;
                }
                break;
            case 146:
                {
                alt220=3;
                }
                break;
            case 147:
                {
                alt220=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 220, 0, input);

                throw nvae;
            }

            switch (alt220) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11539:2: (enumLiteral_0= 'size' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11539:2: (enumLiteral_0= 'size' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11539:4: enumLiteral_0= 'size'
                    {
                    enumLiteral_0=(Token)match(input,144,FOLLOW_144_in_ruleBoundParameterNameID26228); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getBoundParameterNameIDAccess().getSIZEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getBoundParameterNameIDAccess().getSIZEEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11545:6: (enumLiteral_1= 'margin' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11545:6: (enumLiteral_1= 'margin' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11545:8: enumLiteral_1= 'margin'
                    {
                    enumLiteral_1=(Token)match(input,145,FOLLOW_145_in_ruleBoundParameterNameID26245); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getBoundParameterNameIDAccess().getMARGINEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getBoundParameterNameIDAccess().getMARGINEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11551:6: (enumLiteral_2= 'position' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11551:6: (enumLiteral_2= 'position' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11551:8: enumLiteral_2= 'position'
                    {
                    enumLiteral_2=(Token)match(input,146,FOLLOW_146_in_ruleBoundParameterNameID26262); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getBoundParameterNameIDAccess().getPOSITIONEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_2, grammarAccess.getBoundParameterNameIDAccess().getPOSITIONEnumLiteralDeclaration_2()); 
                          
                    }

                    }


                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11557:6: (enumLiteral_3= 'bound' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11557:6: (enumLiteral_3= 'bound' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11557:8: enumLiteral_3= 'bound'
                    {
                    enumLiteral_3=(Token)match(input,147,FOLLOW_147_in_ruleBoundParameterNameID26279); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getBoundParameterNameIDAccess().getBOUNDEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_3, grammarAccess.getBoundParameterNameIDAccess().getBOUNDEnumLiteralDeclaration_3()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBoundParameterNameID"


    // $ANTLR start "ruleLocatorParameterNameID"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11567:1: ruleLocatorParameterNameID returns [Enumerator current=null] : (enumLiteral_0= 'locator' ) ;
    public final Enumerator ruleLocatorParameterNameID() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11569:28: ( (enumLiteral_0= 'locator' ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11570:1: (enumLiteral_0= 'locator' )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11570:1: (enumLiteral_0= 'locator' )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11570:3: enumLiteral_0= 'locator'
            {
            enumLiteral_0=(Token)match(input,72,FOLLOW_72_in_ruleLocatorParameterNameID26323); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current = grammarAccess.getLocatorParameterNameIDAccess().getLOCATOREnumLiteralDeclaration().getEnumLiteral().getInstance();
                      newLeafNode(enumLiteral_0, grammarAccess.getLocatorParameterNameIDAccess().getLOCATOREnumLiteralDeclaration()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLocatorParameterNameID"


    // $ANTLR start "ruleLineStyle"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11580:1: ruleLineStyle returns [Enumerator current=null] : ( (enumLiteral_0= 'none' ) | (enumLiteral_1= 'solid' ) | (enumLiteral_2= 'dash' ) | (enumLiteral_3= 'dot' ) | (enumLiteral_4= 'dashdot' ) | (enumLiteral_5= 'dashdotdot' ) ) ;
    public final Enumerator ruleLineStyle() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11582:28: ( ( (enumLiteral_0= 'none' ) | (enumLiteral_1= 'solid' ) | (enumLiteral_2= 'dash' ) | (enumLiteral_3= 'dot' ) | (enumLiteral_4= 'dashdot' ) | (enumLiteral_5= 'dashdotdot' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11583:1: ( (enumLiteral_0= 'none' ) | (enumLiteral_1= 'solid' ) | (enumLiteral_2= 'dash' ) | (enumLiteral_3= 'dot' ) | (enumLiteral_4= 'dashdot' ) | (enumLiteral_5= 'dashdotdot' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11583:1: ( (enumLiteral_0= 'none' ) | (enumLiteral_1= 'solid' ) | (enumLiteral_2= 'dash' ) | (enumLiteral_3= 'dot' ) | (enumLiteral_4= 'dashdot' ) | (enumLiteral_5= 'dashdotdot' ) )
            int alt221=6;
            switch ( input.LA(1) ) {
            case 79:
                {
                alt221=1;
                }
                break;
            case 148:
                {
                alt221=2;
                }
                break;
            case 149:
                {
                alt221=3;
                }
                break;
            case 150:
                {
                alt221=4;
                }
                break;
            case 151:
                {
                alt221=5;
                }
                break;
            case 152:
                {
                alt221=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 221, 0, input);

                throw nvae;
            }

            switch (alt221) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11583:2: (enumLiteral_0= 'none' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11583:2: (enumLiteral_0= 'none' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11583:4: enumLiteral_0= 'none'
                    {
                    enumLiteral_0=(Token)match(input,79,FOLLOW_79_in_ruleLineStyle26367); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getLineStyleAccess().getNONEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getLineStyleAccess().getNONEEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11589:6: (enumLiteral_1= 'solid' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11589:6: (enumLiteral_1= 'solid' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11589:8: enumLiteral_1= 'solid'
                    {
                    enumLiteral_1=(Token)match(input,148,FOLLOW_148_in_ruleLineStyle26384); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getLineStyleAccess().getSOLIDEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getLineStyleAccess().getSOLIDEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11595:6: (enumLiteral_2= 'dash' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11595:6: (enumLiteral_2= 'dash' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11595:8: enumLiteral_2= 'dash'
                    {
                    enumLiteral_2=(Token)match(input,149,FOLLOW_149_in_ruleLineStyle26401); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getLineStyleAccess().getDASHEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_2, grammarAccess.getLineStyleAccess().getDASHEnumLiteralDeclaration_2()); 
                          
                    }

                    }


                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11601:6: (enumLiteral_3= 'dot' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11601:6: (enumLiteral_3= 'dot' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11601:8: enumLiteral_3= 'dot'
                    {
                    enumLiteral_3=(Token)match(input,150,FOLLOW_150_in_ruleLineStyle26418); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getLineStyleAccess().getDOTEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_3, grammarAccess.getLineStyleAccess().getDOTEnumLiteralDeclaration_3()); 
                          
                    }

                    }


                    }
                    break;
                case 5 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11607:6: (enumLiteral_4= 'dashdot' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11607:6: (enumLiteral_4= 'dashdot' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11607:8: enumLiteral_4= 'dashdot'
                    {
                    enumLiteral_4=(Token)match(input,151,FOLLOW_151_in_ruleLineStyle26435); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getLineStyleAccess().getDASHDOTEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_4, grammarAccess.getLineStyleAccess().getDASHDOTEnumLiteralDeclaration_4()); 
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11613:6: (enumLiteral_5= 'dashdotdot' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11613:6: (enumLiteral_5= 'dashdotdot' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11613:8: enumLiteral_5= 'dashdotdot'
                    {
                    enumLiteral_5=(Token)match(input,152,FOLLOW_152_in_ruleLineStyle26452); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getLineStyleAccess().getDASHDOTDOTEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_5, grammarAccess.getLineStyleAccess().getDASHDOTDOTEnumLiteralDeclaration_5()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLineStyle"


    // $ANTLR start "ruleDockType"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11623:1: ruleDockType returns [Enumerator current=null] : ( (enumLiteral_0= 'top' ) | (enumLiteral_1= 'left' ) | (enumLiteral_2= 'right' ) | (enumLiteral_3= 'bottom' ) | (enumLiteral_4= 'fill' ) | (enumLiteral_5= 'none' ) ) ;
    public final Enumerator ruleDockType() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11625:28: ( ( (enumLiteral_0= 'top' ) | (enumLiteral_1= 'left' ) | (enumLiteral_2= 'right' ) | (enumLiteral_3= 'bottom' ) | (enumLiteral_4= 'fill' ) | (enumLiteral_5= 'none' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11626:1: ( (enumLiteral_0= 'top' ) | (enumLiteral_1= 'left' ) | (enumLiteral_2= 'right' ) | (enumLiteral_3= 'bottom' ) | (enumLiteral_4= 'fill' ) | (enumLiteral_5= 'none' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11626:1: ( (enumLiteral_0= 'top' ) | (enumLiteral_1= 'left' ) | (enumLiteral_2= 'right' ) | (enumLiteral_3= 'bottom' ) | (enumLiteral_4= 'fill' ) | (enumLiteral_5= 'none' ) )
            int alt222=6;
            switch ( input.LA(1) ) {
            case 75:
                {
                alt222=1;
                }
                break;
            case 76:
                {
                alt222=2;
                }
                break;
            case 77:
                {
                alt222=3;
                }
                break;
            case 78:
                {
                alt222=4;
                }
                break;
            case 153:
                {
                alt222=5;
                }
                break;
            case 79:
                {
                alt222=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 222, 0, input);

                throw nvae;
            }

            switch (alt222) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11626:2: (enumLiteral_0= 'top' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11626:2: (enumLiteral_0= 'top' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11626:4: enumLiteral_0= 'top'
                    {
                    enumLiteral_0=(Token)match(input,75,FOLLOW_75_in_ruleDockType26497); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getDockTypeAccess().getTOPEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getDockTypeAccess().getTOPEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11632:6: (enumLiteral_1= 'left' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11632:6: (enumLiteral_1= 'left' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11632:8: enumLiteral_1= 'left'
                    {
                    enumLiteral_1=(Token)match(input,76,FOLLOW_76_in_ruleDockType26514); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getDockTypeAccess().getLEFTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getDockTypeAccess().getLEFTEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11638:6: (enumLiteral_2= 'right' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11638:6: (enumLiteral_2= 'right' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11638:8: enumLiteral_2= 'right'
                    {
                    enumLiteral_2=(Token)match(input,77,FOLLOW_77_in_ruleDockType26531); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getDockTypeAccess().getRIGHTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_2, grammarAccess.getDockTypeAccess().getRIGHTEnumLiteralDeclaration_2()); 
                          
                    }

                    }


                    }
                    break;
                case 4 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11644:6: (enumLiteral_3= 'bottom' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11644:6: (enumLiteral_3= 'bottom' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11644:8: enumLiteral_3= 'bottom'
                    {
                    enumLiteral_3=(Token)match(input,78,FOLLOW_78_in_ruleDockType26548); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getDockTypeAccess().getBOTTOMEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_3, grammarAccess.getDockTypeAccess().getBOTTOMEnumLiteralDeclaration_3()); 
                          
                    }

                    }


                    }
                    break;
                case 5 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11650:6: (enumLiteral_4= 'fill' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11650:6: (enumLiteral_4= 'fill' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11650:8: enumLiteral_4= 'fill'
                    {
                    enumLiteral_4=(Token)match(input,153,FOLLOW_153_in_ruleDockType26565); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getDockTypeAccess().getFILLEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_4, grammarAccess.getDockTypeAccess().getFILLEnumLiteralDeclaration_4()); 
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11656:6: (enumLiteral_5= 'none' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11656:6: (enumLiteral_5= 'none' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11656:8: enumLiteral_5= 'none'
                    {
                    enumLiteral_5=(Token)match(input,79,FOLLOW_79_in_ruleDockType26582); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getDockTypeAccess().getNONEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_5, grammarAccess.getDockTypeAccess().getNONEEnumLiteralDeclaration_5()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDockType"


    // $ANTLR start "ruleDecoratorLocation"
    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11666:1: ruleDecoratorLocation returns [Enumerator current=null] : ( (enumLiteral_0= 'source' ) | (enumLiteral_1= 'target' ) ) ;
    public final Enumerator ruleDecoratorLocation() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;

         enterRule(); 
        try {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11668:28: ( ( (enumLiteral_0= 'source' ) | (enumLiteral_1= 'target' ) ) )
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11669:1: ( (enumLiteral_0= 'source' ) | (enumLiteral_1= 'target' ) )
            {
            // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11669:1: ( (enumLiteral_0= 'source' ) | (enumLiteral_1= 'target' ) )
            int alt223=2;
            int LA223_0 = input.LA(1);

            if ( (LA223_0==154) ) {
                alt223=1;
            }
            else if ( (LA223_0==155) ) {
                alt223=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 223, 0, input);

                throw nvae;
            }
            switch (alt223) {
                case 1 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11669:2: (enumLiteral_0= 'source' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11669:2: (enumLiteral_0= 'source' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11669:4: enumLiteral_0= 'source'
                    {
                    enumLiteral_0=(Token)match(input,154,FOLLOW_154_in_ruleDecoratorLocation26627); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getDecoratorLocationAccess().getSOURCEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getDecoratorLocationAccess().getSOURCEEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11675:6: (enumLiteral_1= 'target' )
                    {
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11675:6: (enumLiteral_1= 'target' )
                    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11675:8: enumLiteral_1= 'target'
                    {
                    enumLiteral_1=(Token)match(input,155,FOLLOW_155_in_ruleDecoratorLocation26644); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getDecoratorLocationAccess().getTARGETEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getDecoratorLocationAccess().getTARGETEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDecoratorLocation"

    // $ANTLR start synpred1_InternalUnicornLanguageDefinition
    public final void synpred1_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1015:5: ( 'end' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1015:7: 'end'
        {
        match(input,29,FOLLOW_29_in_synpred1_InternalUnicornLanguageDefinition2101); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred1_InternalUnicornLanguageDefinition

    // $ANTLR start synpred2_InternalUnicornLanguageDefinition
    public final void synpred2_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1117:4: ( 'end' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:1117:6: 'end'
        {
        match(input,29,FOLLOW_29_in_synpred2_InternalUnicornLanguageDefinition2318); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred2_InternalUnicornLanguageDefinition

    // $ANTLR start synpred8_InternalUnicornLanguageDefinition
    public final void synpred8_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3756:4: ( 'end' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:3756:6: 'end'
        {
        match(input,29,FOLLOW_29_in_synpred8_InternalUnicornLanguageDefinition8421); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred8_InternalUnicornLanguageDefinition

    // $ANTLR start synpred10_InternalUnicornLanguageDefinition
    public final void synpred10_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4362:2: ( ( ( ruleQualifiedName | RULE_STRING ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4363:1: ( ( ruleQualifiedName | RULE_STRING ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4363:1: ( ( ruleQualifiedName | RULE_STRING ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4364:1: ( ruleQualifiedName | RULE_STRING )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4364:1: ( ruleQualifiedName | RULE_STRING )
        int alt224=2;
        int LA224_0 = input.LA(1);

        if ( (LA224_0==RULE_ID) ) {
            alt224=1;
        }
        else if ( (LA224_0==RULE_STRING) ) {
            alt224=2;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 224, 0, input);

            throw nvae;
        }
        switch (alt224) {
            case 1 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4365:1: ruleQualifiedName
                {
                pushFollow(FOLLOW_ruleQualifiedName_in_synpred10_InternalUnicornLanguageDefinition9906);
                ruleQualifiedName();

                state._fsp--;
                if (state.failed) return ;

                }
                break;
            case 2 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4366:8: RULE_STRING
                {
                match(input,RULE_STRING,FOLLOW_RULE_STRING_in_synpred10_InternalUnicornLanguageDefinition9915); if (state.failed) return ;

                }
                break;

        }


        }


        }
    }
    // $ANTLR end synpred10_InternalUnicornLanguageDefinition

    // $ANTLR start synpred12_InternalUnicornLanguageDefinition
    public final void synpred12_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4525:2: ( ( ( ruleQualifiedName | RULE_STRING ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4526:1: ( ( ruleQualifiedName | RULE_STRING ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4526:1: ( ( ruleQualifiedName | RULE_STRING ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4527:1: ( ruleQualifiedName | RULE_STRING )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4527:1: ( ruleQualifiedName | RULE_STRING )
        int alt225=2;
        int LA225_0 = input.LA(1);

        if ( (LA225_0==RULE_ID) ) {
            alt225=1;
        }
        else if ( (LA225_0==RULE_STRING) ) {
            alt225=2;
        }
        else {
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 225, 0, input);

            throw nvae;
        }
        switch (alt225) {
            case 1 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4528:1: ruleQualifiedName
                {
                pushFollow(FOLLOW_ruleQualifiedName_in_synpred12_InternalUnicornLanguageDefinition10233);
                ruleQualifiedName();

                state._fsp--;
                if (state.failed) return ;

                }
                break;
            case 2 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:4529:8: RULE_STRING
                {
                match(input,RULE_STRING,FOLLOW_RULE_STRING_in_synpred12_InternalUnicornLanguageDefinition10242); if (state.failed) return ;

                }
                break;

        }


        }


        }
    }
    // $ANTLR end synpred12_InternalUnicornLanguageDefinition

    // $ANTLR start synpred18_InternalUnicornLanguageDefinition
    public final void synpred18_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7215:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7215:4: ( () ( ( ruleOpMultiAssign ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7215:4: ( () ( ( ruleOpMultiAssign ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7215:5: () ( ( ruleOpMultiAssign ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7215:5: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7216:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7216:2: ( ( ruleOpMultiAssign ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7217:1: ( ruleOpMultiAssign )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7217:1: ( ruleOpMultiAssign )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7218:3: ruleOpMultiAssign
        {
        pushFollow(FOLLOW_ruleOpMultiAssign_in_synpred18_InternalUnicornLanguageDefinition15872);
        ruleOpMultiAssign();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred18_InternalUnicornLanguageDefinition

    // $ANTLR start synpred19_InternalUnicornLanguageDefinition
    public final void synpred19_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7343:3: ( ( () ( ( ruleOpOr ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7343:4: ( () ( ( ruleOpOr ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7343:4: ( () ( ( ruleOpOr ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7343:5: () ( ( ruleOpOr ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7343:5: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7344:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7344:2: ( ( ruleOpOr ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7345:1: ( ruleOpOr )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7345:1: ( ruleOpOr )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7346:3: ruleOpOr
        {
        pushFollow(FOLLOW_ruleOpOr_in_synpred19_InternalUnicornLanguageDefinition16220);
        ruleOpOr();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred19_InternalUnicornLanguageDefinition

    // $ANTLR start synpred20_InternalUnicornLanguageDefinition
    public final void synpred20_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7444:3: ( ( () ( ( ruleOpAnd ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7444:4: ( () ( ( ruleOpAnd ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7444:4: ( () ( ( ruleOpAnd ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7444:5: () ( ( ruleOpAnd ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7444:5: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7445:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7445:2: ( ( ruleOpAnd ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7446:1: ( ruleOpAnd )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7446:1: ( ruleOpAnd )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7447:3: ruleOpAnd
        {
        pushFollow(FOLLOW_ruleOpAnd_in_synpred20_InternalUnicornLanguageDefinition16479);
        ruleOpAnd();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred20_InternalUnicornLanguageDefinition

    // $ANTLR start synpred21_InternalUnicornLanguageDefinition
    public final void synpred21_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7545:3: ( ( () ( ( ruleOpEquality ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7545:4: ( () ( ( ruleOpEquality ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7545:4: ( () ( ( ruleOpEquality ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7545:5: () ( ( ruleOpEquality ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7545:5: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7546:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7546:2: ( ( ruleOpEquality ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7547:1: ( ruleOpEquality )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7547:1: ( ruleOpEquality )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7548:3: ruleOpEquality
        {
        pushFollow(FOLLOW_ruleOpEquality_in_synpred21_InternalUnicornLanguageDefinition16738);
        ruleOpEquality();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred21_InternalUnicornLanguageDefinition

    // $ANTLR start synpred22_InternalUnicornLanguageDefinition
    public final void synpred22_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:4: ( ( () 'instanceof' ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:5: ( () 'instanceof' )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:5: ( () 'instanceof' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:6: () 'instanceof'
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7653:6: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7654:1: 
        {
        }

        match(input,87,FOLLOW_87_in_synpred22_InternalUnicornLanguageDefinition17014); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred22_InternalUnicornLanguageDefinition

    // $ANTLR start synpred23_InternalUnicornLanguageDefinition
    public final void synpred23_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:8: ( ( () ( ( ruleOpCompare ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:9: ( () ( ( ruleOpCompare ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:9: ( () ( ( ruleOpCompare ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:10: () ( ( ruleOpCompare ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7681:10: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7682:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7682:2: ( ( ruleOpCompare ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7683:1: ( ruleOpCompare )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7683:1: ( ruleOpCompare )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7684:3: ruleOpCompare
        {
        pushFollow(FOLLOW_ruleOpCompare_in_synpred23_InternalUnicornLanguageDefinition17087);
        ruleOpCompare();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred23_InternalUnicornLanguageDefinition

    // $ANTLR start synpred24_InternalUnicornLanguageDefinition
    public final void synpred24_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7803:3: ( ( () ( ( ruleOpOther ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7803:4: ( () ( ( ruleOpOther ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7803:4: ( () ( ( ruleOpOther ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7803:5: () ( ( ruleOpOther ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7803:5: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7804:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7804:2: ( ( ruleOpOther ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7805:1: ( ruleOpOther )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7805:1: ( ruleOpOther )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7806:3: ruleOpOther
        {
        pushFollow(FOLLOW_ruleOpOther_in_synpred24_InternalUnicornLanguageDefinition17406);
        ruleOpOther();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred24_InternalUnicornLanguageDefinition

    // $ANTLR start synpred25_InternalUnicornLanguageDefinition
    public final void synpred25_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7911:3: ( ( () ( ( ruleOpAdd ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7911:4: ( () ( ( ruleOpAdd ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7911:4: ( () ( ( ruleOpAdd ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7911:5: () ( ( ruleOpAdd ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7911:5: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7912:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7912:2: ( ( ruleOpAdd ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7913:1: ( ruleOpAdd )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7913:1: ( ruleOpAdd )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:7914:3: ruleOpAdd
        {
        pushFollow(FOLLOW_ruleOpAdd_in_synpred25_InternalUnicornLanguageDefinition17686);
        ruleOpAdd();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred25_InternalUnicornLanguageDefinition

    // $ANTLR start synpred26_InternalUnicornLanguageDefinition
    public final void synpred26_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8019:3: ( ( () ( ( ruleOpMulti ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8019:4: ( () ( ( ruleOpMulti ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8019:4: ( () ( ( ruleOpMulti ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8019:5: () ( ( ruleOpMulti ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8019:5: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8020:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8020:2: ( ( ruleOpMulti ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8021:1: ( ruleOpMulti )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8021:1: ( ruleOpMulti )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8022:3: ruleOpMulti
        {
        pushFollow(FOLLOW_ruleOpMulti_in_synpred26_InternalUnicornLanguageDefinition17966);
        ruleOpMulti();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred26_InternalUnicornLanguageDefinition

    // $ANTLR start synpred27_InternalUnicornLanguageDefinition
    public final void synpred27_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8252:3: ( ( () 'as' ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8252:4: ( () 'as' )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8252:4: ( () 'as' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8252:5: () 'as'
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8252:5: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8253:1: 
        {
        }

        match(input,101,FOLLOW_101_in_synpred27_InternalUnicornLanguageDefinition18560); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred27_InternalUnicornLanguageDefinition

    // $ANTLR start synpred28_InternalUnicornLanguageDefinition
    public final void synpred28_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:4: ( ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:5: ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:5: ( () '.' ( ( ruleValidID ) ) ruleOpSingleAssign )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:6: () '.' ( ( ruleValidID ) ) ruleOpSingleAssign
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8312:6: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8313:1: 
        {
        }

        match(input,102,FOLLOW_102_in_synpred28_InternalUnicornLanguageDefinition18714); if (state.failed) return ;
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8314:1: ( ( ruleValidID ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8315:1: ( ruleValidID )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8315:1: ( ruleValidID )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8316:3: ruleValidID
        {
        pushFollow(FOLLOW_ruleValidID_in_synpred28_InternalUnicornLanguageDefinition18723);
        ruleValidID();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        pushFollow(FOLLOW_ruleOpSingleAssign_in_synpred28_InternalUnicornLanguageDefinition18729);
        ruleOpSingleAssign();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred28_InternalUnicornLanguageDefinition

    // $ANTLR start synpred29_InternalUnicornLanguageDefinition
    public final void synpred29_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:8: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:9: ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:9: ( () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:10: () ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8370:10: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8371:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8371:2: ( '.' | ( ( '?.' ) ) | ( ( '*.' ) ) )
        int alt226=3;
        switch ( input.LA(1) ) {
        case 102:
            {
            alt226=1;
            }
            break;
        case 103:
            {
            alt226=2;
            }
            break;
        case 104:
            {
            alt226=3;
            }
            break;
        default:
            if (state.backtracking>0) {state.failed=true; return ;}
            NoViableAltException nvae =
                new NoViableAltException("", 226, 0, input);

            throw nvae;
        }

        switch (alt226) {
            case 1 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8371:4: '.'
                {
                match(input,102,FOLLOW_102_in_synpred29_InternalUnicornLanguageDefinition18832); if (state.failed) return ;

                }
                break;
            case 2 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8373:6: ( ( '?.' ) )
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8373:6: ( ( '?.' ) )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8374:1: ( '?.' )
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8374:1: ( '?.' )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8375:2: '?.'
                {
                match(input,103,FOLLOW_103_in_synpred29_InternalUnicornLanguageDefinition18846); if (state.failed) return ;

                }


                }


                }
                break;
            case 3 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8380:6: ( ( '*.' ) )
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8380:6: ( ( '*.' ) )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8381:1: ( '*.' )
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8381:1: ( '*.' )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8382:2: '*.'
                {
                match(input,104,FOLLOW_104_in_synpred29_InternalUnicornLanguageDefinition18866); if (state.failed) return ;

                }


                }


                }
                break;

        }


        }


        }
    }
    // $ANTLR end synpred29_InternalUnicornLanguageDefinition

    // $ANTLR start synpred30_InternalUnicornLanguageDefinition
    public final void synpred30_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8491:4: ( ( '(' ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8492:1: ( '(' )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8492:1: ( '(' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8493:2: '('
        {
        match(input,19,FOLLOW_19_in_synpred30_InternalUnicornLanguageDefinition19093); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred30_InternalUnicornLanguageDefinition

    // $ANTLR start synpred31_InternalUnicornLanguageDefinition
    public final void synpred31_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8512:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8512:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8512:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8512:6: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|'
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8512:6: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8513:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8513:2: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt228=2;
        int LA228_0 = input.LA(1);

        if ( (LA228_0==RULE_ID||LA228_0==19||LA228_0==128) ) {
            alt228=1;
        }
        switch (alt228) {
            case 1 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8513:3: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8513:3: ( ( ruleJvmFormalParameter ) )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8514:1: ( ruleJvmFormalParameter )
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8514:1: ( ruleJvmFormalParameter )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8515:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalUnicornLanguageDefinition19145);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8517:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop227:
                do {
                    int alt227=2;
                    int LA227_0 = input.LA(1);

                    if ( (LA227_0==37) ) {
                        alt227=1;
                    }


                    switch (alt227) {
                	case 1 :
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8517:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,37,FOLLOW_37_in_synpred31_InternalUnicornLanguageDefinition19152); if (state.failed) return ;
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8518:1: ( ( ruleJvmFormalParameter ) )
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8519:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8519:1: ( ruleJvmFormalParameter )
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:8520:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalUnicornLanguageDefinition19159);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop227;
                    }
                } while (true);


                }
                break;

        }

        match(input,105,FOLLOW_105_in_synpred31_InternalUnicornLanguageDefinition19169); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred31_InternalUnicornLanguageDefinition

    // $ANTLR start synpred33_InternalUnicornLanguageDefinition
    public final void synpred33_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9126:4: ( 'else' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9126:6: 'else'
        {
        match(input,107,FOLLOW_107_in_synpred33_InternalUnicornLanguageDefinition20614); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred33_InternalUnicornLanguageDefinition

    // $ANTLR start synpred34_InternalUnicornLanguageDefinition
    public final void synpred34_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9750:4: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9750:5: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9750:5: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9750:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9750:6: ( ( ruleJvmTypeReference ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9751:1: ( ruleJvmTypeReference )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9751:1: ( ruleJvmTypeReference )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9752:1: ruleJvmTypeReference
        {
        pushFollow(FOLLOW_ruleJvmTypeReference_in_synpred34_InternalUnicornLanguageDefinition21980);
        ruleJvmTypeReference();

        state._fsp--;
        if (state.failed) return ;

        }


        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9754:2: ( ( ruleValidID ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9755:1: ( ruleValidID )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9755:1: ( ruleValidID )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9756:1: ruleValidID
        {
        pushFollow(FOLLOW_ruleValidID_in_synpred34_InternalUnicornLanguageDefinition21989);
        ruleValidID();

        state._fsp--;
        if (state.failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred34_InternalUnicornLanguageDefinition

    // $ANTLR start synpred35_InternalUnicornLanguageDefinition
    public final void synpred35_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9997:4: ( ( '(' ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9998:1: ( '(' )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9998:1: ( '(' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:9999:2: '('
        {
        match(input,19,FOLLOW_19_in_synpred35_InternalUnicornLanguageDefinition22438); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred35_InternalUnicornLanguageDefinition

    // $ANTLR start synpred36_InternalUnicornLanguageDefinition
    public final void synpred36_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10018:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10018:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10018:5: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10018:6: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|'
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10018:6: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10019:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10019:2: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt232=2;
        int LA232_0 = input.LA(1);

        if ( (LA232_0==RULE_ID||LA232_0==19||LA232_0==128) ) {
            alt232=1;
        }
        switch (alt232) {
            case 1 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10019:3: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10019:3: ( ( ruleJvmFormalParameter ) )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10020:1: ( ruleJvmFormalParameter )
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10020:1: ( ruleJvmFormalParameter )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10021:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred36_InternalUnicornLanguageDefinition22490);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10023:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop231:
                do {
                    int alt231=2;
                    int LA231_0 = input.LA(1);

                    if ( (LA231_0==37) ) {
                        alt231=1;
                    }


                    switch (alt231) {
                	case 1 :
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10023:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,37,FOLLOW_37_in_synpred36_InternalUnicornLanguageDefinition22497); if (state.failed) return ;
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10024:1: ( ( ruleJvmFormalParameter ) )
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10025:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10025:1: ( ruleJvmFormalParameter )
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10026:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred36_InternalUnicornLanguageDefinition22504);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop231;
                    }
                } while (true);


                }
                break;

        }

        match(input,105,FOLLOW_105_in_synpred36_InternalUnicornLanguageDefinition22514); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred36_InternalUnicornLanguageDefinition

    // $ANTLR start synpred37_InternalUnicornLanguageDefinition
    public final void synpred37_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10267:3: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10267:4: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10267:4: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10267:5: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|'
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10267:5: ()
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10268:1: 
        {
        }

        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10268:2: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
        int alt234=2;
        int LA234_0 = input.LA(1);

        if ( (LA234_0==RULE_ID||LA234_0==19||LA234_0==128) ) {
            alt234=1;
        }
        switch (alt234) {
            case 1 :
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10268:3: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10268:3: ( ( ruleJvmFormalParameter ) )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10269:1: ( ruleJvmFormalParameter )
                {
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10269:1: ( ruleJvmFormalParameter )
                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10270:1: ruleJvmFormalParameter
                {
                pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred37_InternalUnicornLanguageDefinition23085);
                ruleJvmFormalParameter();

                state._fsp--;
                if (state.failed) return ;

                }


                }

                // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10272:2: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                loop233:
                do {
                    int alt233=2;
                    int LA233_0 = input.LA(1);

                    if ( (LA233_0==37) ) {
                        alt233=1;
                    }


                    switch (alt233) {
                	case 1 :
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10272:4: ',' ( ( ruleJvmFormalParameter ) )
                	    {
                	    match(input,37,FOLLOW_37_in_synpred37_InternalUnicornLanguageDefinition23092); if (state.failed) return ;
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10273:1: ( ( ruleJvmFormalParameter ) )
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10274:1: ( ruleJvmFormalParameter )
                	    {
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10274:1: ( ruleJvmFormalParameter )
                	    // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10275:1: ruleJvmFormalParameter
                	    {
                	    pushFollow(FOLLOW_ruleJvmFormalParameter_in_synpred37_InternalUnicornLanguageDefinition23099);
                	    ruleJvmFormalParameter();

                	    state._fsp--;
                	    if (state.failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop233;
                    }
                } while (true);


                }
                break;

        }

        match(input,105,FOLLOW_105_in_synpred37_InternalUnicornLanguageDefinition23109); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred37_InternalUnicornLanguageDefinition

    // $ANTLR start synpred38_InternalUnicornLanguageDefinition
    public final void synpred38_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10643:2: ( ( ruleXExpression ) )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10644:1: ( ruleXExpression )
        {
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10644:1: ( ruleXExpression )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10645:1: ruleXExpression
        {
        pushFollow(FOLLOW_ruleXExpression_in_synpred38_InternalUnicornLanguageDefinition23990);
        ruleXExpression();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred38_InternalUnicornLanguageDefinition

    // $ANTLR start synpred39_InternalUnicornLanguageDefinition
    public final void synpred39_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10714:5: ( 'catch' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10714:7: 'catch'
        {
        match(input,127,FOLLOW_127_in_synpred39_InternalUnicornLanguageDefinition24135); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred39_InternalUnicornLanguageDefinition

    // $ANTLR start synpred40_InternalUnicornLanguageDefinition
    public final void synpred40_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10733:5: ( 'finally' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10733:7: 'finally'
        {
        match(input,126,FOLLOW_126_in_synpred40_InternalUnicornLanguageDefinition24165); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred40_InternalUnicornLanguageDefinition

    // $ANTLR start synpred42_InternalUnicornLanguageDefinition
    public final void synpred42_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10881:3: ( '.' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:10882:2: '.'
        {
        match(input,102,FOLLOW_102_in_synpred42_InternalUnicornLanguageDefinition24512); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred42_InternalUnicornLanguageDefinition

    // $ANTLR start synpred43_InternalUnicornLanguageDefinition
    public final void synpred43_InternalUnicornLanguageDefinition_fragment() throws RecognitionException {   
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11067:4: ( '<' )
        // ../ms.unicorn.language.uld/src-gen/ms/unicorn/language/parser/antlr/internal/InternalUnicornLanguageDefinition.g:11067:6: '<'
        {
        match(input,91,FOLLOW_91_in_synpred43_InternalUnicornLanguageDefinition24969); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred43_InternalUnicornLanguageDefinition

    // Delegated rules

    public final boolean synpred10_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred10_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred18_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred18_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred37_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred37_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred28_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred28_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred22_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred22_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred35_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred35_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred42_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred42_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred19_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred19_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred36_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred36_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred43_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred43_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred8_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred8_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred25_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred25_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred21_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred21_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred34_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred34_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred38_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred38_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred39_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred39_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred26_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred26_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred33_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred33_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred23_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred23_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred27_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred27_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred24_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred24_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred40_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred40_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred2_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred2_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred30_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred30_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred31_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred31_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred20_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred20_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred12_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred12_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred29_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred29_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred1_InternalUnicornLanguageDefinition() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred1_InternalUnicornLanguageDefinition_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


    protected DFA6 dfa6 = new DFA6(this);
    protected DFA172 dfa172 = new DFA172(this);
    protected DFA171 dfa171 = new DFA171(this);
    protected DFA198 dfa198 = new DFA198(this);
    protected DFA197 dfa197 = new DFA197(this);
    protected DFA204 dfa204 = new DFA204(this);
    protected DFA206 dfa206 = new DFA206(this);
    protected DFA215 dfa215 = new DFA215(this);
    static final String DFA6_eotS =
        "\14\uffff";
    static final String DFA6_eofS =
        "\14\uffff";
    static final String DFA6_minS =
        "\1\14\13\uffff";
    static final String DFA6_maxS =
        "\1\112\13\uffff";
    static final String DFA6_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13";
    static final String DFA6_specialS =
        "\14\uffff}>";
    static final String[] DFA6_transitionS = {
            "\1\1\21\uffff\1\2\1\13\3\3\14\uffff\1\4\1\uffff\1\5\1\uffff"+
            "\1\4\1\uffff\1\13\6\uffff\2\13\4\uffff\1\11\1\7\2\uffff\1\6"+
            "\1\uffff\1\12\2\10",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA6_eot = DFA.unpackEncodedString(DFA6_eotS);
    static final short[] DFA6_eof = DFA.unpackEncodedString(DFA6_eofS);
    static final char[] DFA6_min = DFA.unpackEncodedStringToUnsignedChars(DFA6_minS);
    static final char[] DFA6_max = DFA.unpackEncodedStringToUnsignedChars(DFA6_maxS);
    static final short[] DFA6_accept = DFA.unpackEncodedString(DFA6_acceptS);
    static final short[] DFA6_special = DFA.unpackEncodedString(DFA6_specialS);
    static final short[][] DFA6_transition;

    static {
        int numStates = DFA6_transitionS.length;
        DFA6_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA6_transition[i] = DFA.unpackEncodedString(DFA6_transitionS[i]);
        }
    }

    class DFA6 extends DFA {

        public DFA6(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 6;
            this.eot = DFA6_eot;
            this.eof = DFA6_eof;
            this.min = DFA6_min;
            this.max = DFA6_max;
            this.accept = DFA6_accept;
            this.special = DFA6_special;
            this.transition = DFA6_transition;
        }
        public String getDescription() {
            return "307:1: (this_Namespace_0= ruleNamespace | this_ToolGroup_1= ruleToolGroup | this_ToolItem_2= ruleToolItem | this_ElementDef_3= ruleElementDef | this_FigureDef_4= ruleFigureDef | this_DecoratorDef_5= ruleDecoratorDef | this_ConnectionStyleDef_6= ruleConnectionStyleDef | this_PolicyDef_7= rulePolicyDef | this_ValidatorDef_8= ruleValidatorDef | this_DecoratorLocatorDef_9= ruleDecoratorLocatorDef | this_ViewDef_10= ruleViewDef )";
        }
    }
    static final String DFA172_eotS =
        "\120\uffff";
    static final String DFA172_eofS =
        "\1\2\117\uffff";
    static final String DFA172_minS =
        "\1\4\1\0\116\uffff";
    static final String DFA172_maxS =
        "\1\u0080\1\0\116\uffff";
    static final String DFA172_acceptS =
        "\2\uffff\1\2\114\uffff\1\1";
    static final String DFA172_specialS =
        "\1\uffff\1\0\116\uffff}>";
    static final String[] DFA172_transitionS = {
            "\3\2\5\uffff\3\2\4\uffff\1\1\1\uffff\1\2\1\uffff\1\2\4\uffff"+
            "\1\2\1\uffff\5\2\1\uffff\3\2\10\uffff\1\2\1\uffff\1\2\1\uffff"+
            "\1\2\1\uffff\1\2\6\uffff\2\2\4\uffff\2\2\1\uffff\2\2\1\uffff"+
            "\3\2\5\uffff\1\2\1\uffff\27\2\1\uffff\14\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA172_eot = DFA.unpackEncodedString(DFA172_eotS);
    static final short[] DFA172_eof = DFA.unpackEncodedString(DFA172_eofS);
    static final char[] DFA172_min = DFA.unpackEncodedStringToUnsignedChars(DFA172_minS);
    static final char[] DFA172_max = DFA.unpackEncodedStringToUnsignedChars(DFA172_maxS);
    static final short[] DFA172_accept = DFA.unpackEncodedString(DFA172_acceptS);
    static final short[] DFA172_special = DFA.unpackEncodedString(DFA172_specialS);
    static final short[][] DFA172_transition;

    static {
        int numStates = DFA172_transitionS.length;
        DFA172_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA172_transition[i] = DFA.unpackEncodedString(DFA172_transitionS[i]);
        }
    }

    class DFA172 extends DFA {

        public DFA172(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 172;
            this.eot = DFA172_eot;
            this.eof = DFA172_eof;
            this.min = DFA172_min;
            this.max = DFA172_max;
            this.accept = DFA172_accept;
            this.special = DFA172_special;
            this.transition = DFA172_transition;
        }
        public String getDescription() {
            return "8491:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_16_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )? otherlv_21= ')' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA172_1 = input.LA(1);

                         
                        int index172_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred30_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index172_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 172, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA171_eotS =
        "\34\uffff";
    static final String DFA171_eofS =
        "\34\uffff";
    static final String DFA171_minS =
        "\1\4\2\0\31\uffff";
    static final String DFA171_maxS =
        "\1\u0080\2\0\31\uffff";
    static final String DFA171_acceptS =
        "\3\uffff\2\1\1\2\25\uffff\1\3";
    static final String DFA171_specialS =
        "\1\0\1\1\1\2\31\uffff}>";
    static final String[] DFA171_transitionS = {
            "\1\5\1\1\1\5\6\uffff\1\5\5\uffff\1\2\3\uffff\1\33\14\uffff"+
            "\1\5\53\uffff\1\5\12\uffff\1\5\2\uffff\2\5\4\uffff\1\5\4\uffff"+
            "\1\4\1\5\1\uffff\1\5\2\uffff\3\5\3\uffff\1\5\1\uffff\7\5\2\uffff"+
            "\1\3",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA171_eot = DFA.unpackEncodedString(DFA171_eotS);
    static final short[] DFA171_eof = DFA.unpackEncodedString(DFA171_eofS);
    static final char[] DFA171_min = DFA.unpackEncodedStringToUnsignedChars(DFA171_minS);
    static final char[] DFA171_max = DFA.unpackEncodedStringToUnsignedChars(DFA171_maxS);
    static final short[] DFA171_accept = DFA.unpackEncodedString(DFA171_acceptS);
    static final short[] DFA171_special = DFA.unpackEncodedString(DFA171_specialS);
    static final short[][] DFA171_transition;

    static {
        int numStates = DFA171_transitionS.length;
        DFA171_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA171_transition[i] = DFA.unpackEncodedString(DFA171_transitionS[i]);
        }
    }

    class DFA171 extends DFA {

        public DFA171(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 171;
            this.eot = DFA171_eot;
            this.eof = DFA171_eof;
            this.min = DFA171_min;
            this.max = DFA171_max;
            this.accept = DFA171_accept;
            this.special = DFA171_special;
            this.transition = DFA171_transition;
        }
        public String getDescription() {
            return "8512:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_memberCallArguments_17_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_18_0= ruleXExpression ) ) (otherlv_19= ',' ( (lv_memberCallArguments_20_0= ruleXExpression ) ) )* ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA171_0 = input.LA(1);

                         
                        int index171_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA171_0==RULE_ID) ) {s = 1;}

                        else if ( (LA171_0==19) ) {s = 2;}

                        else if ( (LA171_0==128) && (synpred31_InternalUnicornLanguageDefinition())) {s = 3;}

                        else if ( (LA171_0==105) && (synpred31_InternalUnicornLanguageDefinition())) {s = 4;}

                        else if ( (LA171_0==RULE_STRING||LA171_0==RULE_INT||LA171_0==13||LA171_0==36||LA171_0==80||LA171_0==91||(LA171_0>=94 && LA171_0<=95)||LA171_0==100||LA171_0==106||LA171_0==108||(LA171_0>=111 && LA171_0<=113)||LA171_0==117||(LA171_0>=119 && LA171_0<=125)) ) {s = 5;}

                        else if ( (LA171_0==23) ) {s = 27;}

                         
                        input.seek(index171_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA171_1 = input.LA(1);

                         
                        int index171_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred31_InternalUnicornLanguageDefinition()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index171_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA171_2 = input.LA(1);

                         
                        int index171_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred31_InternalUnicornLanguageDefinition()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index171_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 171, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA198_eotS =
        "\120\uffff";
    static final String DFA198_eofS =
        "\1\2\117\uffff";
    static final String DFA198_minS =
        "\1\4\1\0\116\uffff";
    static final String DFA198_maxS =
        "\1\u0080\1\0\116\uffff";
    static final String DFA198_acceptS =
        "\2\uffff\1\2\114\uffff\1\1";
    static final String DFA198_specialS =
        "\1\uffff\1\0\116\uffff}>";
    static final String[] DFA198_transitionS = {
            "\3\2\5\uffff\3\2\4\uffff\1\1\1\uffff\1\2\1\uffff\1\2\4\uffff"+
            "\1\2\1\uffff\5\2\1\uffff\3\2\10\uffff\1\2\1\uffff\1\2\1\uffff"+
            "\1\2\1\uffff\1\2\6\uffff\2\2\4\uffff\2\2\1\uffff\2\2\1\uffff"+
            "\3\2\5\uffff\1\2\1\uffff\27\2\1\uffff\14\2\1\uffff\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA198_eot = DFA.unpackEncodedString(DFA198_eotS);
    static final short[] DFA198_eof = DFA.unpackEncodedString(DFA198_eofS);
    static final char[] DFA198_min = DFA.unpackEncodedStringToUnsignedChars(DFA198_minS);
    static final char[] DFA198_max = DFA.unpackEncodedStringToUnsignedChars(DFA198_maxS);
    static final short[] DFA198_accept = DFA.unpackEncodedString(DFA198_acceptS);
    static final short[] DFA198_special = DFA.unpackEncodedString(DFA198_specialS);
    static final short[][] DFA198_transition;

    static {
        int numStates = DFA198_transitionS.length;
        DFA198_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA198_transition[i] = DFA.unpackEncodedString(DFA198_transitionS[i]);
        }
    }

    class DFA198 extends DFA {

        public DFA198(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 198;
            this.eot = DFA198_eot;
            this.eof = DFA198_eof;
            this.min = DFA198_min;
            this.max = DFA198_max;
            this.accept = DFA198_accept;
            this.special = DFA198_special;
            this.transition = DFA198_transition;
        }
        public String getDescription() {
            return "9997:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA198_1 = input.LA(1);

                         
                        int index198_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred35_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index198_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 198, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA197_eotS =
        "\34\uffff";
    static final String DFA197_eofS =
        "\34\uffff";
    static final String DFA197_minS =
        "\1\4\2\0\31\uffff";
    static final String DFA197_maxS =
        "\1\u0080\2\0\31\uffff";
    static final String DFA197_acceptS =
        "\3\uffff\2\1\1\2\25\uffff\1\3";
    static final String DFA197_specialS =
        "\1\0\1\1\1\2\31\uffff}>";
    static final String[] DFA197_transitionS = {
            "\1\5\1\1\1\5\6\uffff\1\5\5\uffff\1\2\3\uffff\1\33\14\uffff"+
            "\1\5\53\uffff\1\5\12\uffff\1\5\2\uffff\2\5\4\uffff\1\5\4\uffff"+
            "\1\4\1\5\1\uffff\1\5\2\uffff\3\5\3\uffff\1\5\1\uffff\7\5\2\uffff"+
            "\1\3",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA197_eot = DFA.unpackEncodedString(DFA197_eotS);
    static final short[] DFA197_eof = DFA.unpackEncodedString(DFA197_eofS);
    static final char[] DFA197_min = DFA.unpackEncodedStringToUnsignedChars(DFA197_minS);
    static final char[] DFA197_max = DFA.unpackEncodedStringToUnsignedChars(DFA197_maxS);
    static final short[] DFA197_accept = DFA.unpackEncodedString(DFA197_acceptS);
    static final short[] DFA197_special = DFA.unpackEncodedString(DFA197_specialS);
    static final short[][] DFA197_transition;

    static {
        int numStates = DFA197_transitionS.length;
        DFA197_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA197_transition[i] = DFA.unpackEncodedString(DFA197_transitionS[i]);
        }
    }

    class DFA197 extends DFA {

        public DFA197(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 197;
            this.eot = DFA197_eot;
            this.eof = DFA197_eof;
            this.min = DFA197_min;
            this.max = DFA197_max;
            this.accept = DFA197_accept;
            this.special = DFA197_special;
            this.transition = DFA197_transition;
        }
        public String getDescription() {
            return "10018:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_featureCallArguments_9_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_featureCallArguments_12_0= ruleXExpression ) ) )* ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA197_0 = input.LA(1);

                         
                        int index197_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA197_0==RULE_ID) ) {s = 1;}

                        else if ( (LA197_0==19) ) {s = 2;}

                        else if ( (LA197_0==128) && (synpred36_InternalUnicornLanguageDefinition())) {s = 3;}

                        else if ( (LA197_0==105) && (synpred36_InternalUnicornLanguageDefinition())) {s = 4;}

                        else if ( (LA197_0==RULE_STRING||LA197_0==RULE_INT||LA197_0==13||LA197_0==36||LA197_0==80||LA197_0==91||(LA197_0>=94 && LA197_0<=95)||LA197_0==100||LA197_0==106||LA197_0==108||(LA197_0>=111 && LA197_0<=113)||LA197_0==117||(LA197_0>=119 && LA197_0<=125)) ) {s = 5;}

                        else if ( (LA197_0==23) ) {s = 27;}

                         
                        input.seek(index197_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA197_1 = input.LA(1);

                         
                        int index197_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred36_InternalUnicornLanguageDefinition()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index197_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA197_2 = input.LA(1);

                         
                        int index197_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred36_InternalUnicornLanguageDefinition()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index197_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 197, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA204_eotS =
        "\34\uffff";
    static final String DFA204_eofS =
        "\34\uffff";
    static final String DFA204_minS =
        "\1\4\2\0\31\uffff";
    static final String DFA204_maxS =
        "\1\u0080\2\0\31\uffff";
    static final String DFA204_acceptS =
        "\3\uffff\2\1\1\2\25\uffff\1\3";
    static final String DFA204_specialS =
        "\1\0\1\1\1\2\31\uffff}>";
    static final String[] DFA204_transitionS = {
            "\1\5\1\1\1\5\6\uffff\1\5\5\uffff\1\2\3\uffff\1\33\14\uffff"+
            "\1\5\53\uffff\1\5\12\uffff\1\5\2\uffff\2\5\4\uffff\1\5\4\uffff"+
            "\1\4\1\5\1\uffff\1\5\2\uffff\3\5\3\uffff\1\5\1\uffff\7\5\2\uffff"+
            "\1\3",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA204_eot = DFA.unpackEncodedString(DFA204_eotS);
    static final short[] DFA204_eof = DFA.unpackEncodedString(DFA204_eofS);
    static final char[] DFA204_min = DFA.unpackEncodedStringToUnsignedChars(DFA204_minS);
    static final char[] DFA204_max = DFA.unpackEncodedStringToUnsignedChars(DFA204_maxS);
    static final short[] DFA204_accept = DFA.unpackEncodedString(DFA204_acceptS);
    static final short[] DFA204_special = DFA.unpackEncodedString(DFA204_specialS);
    static final short[][] DFA204_transition;

    static {
        int numStates = DFA204_transitionS.length;
        DFA204_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA204_transition[i] = DFA.unpackEncodedString(DFA204_transitionS[i]);
        }
    }

    class DFA204 extends DFA {

        public DFA204(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 204;
            this.eot = DFA204_eot;
            this.eof = DFA204_eof;
            this.min = DFA204_min;
            this.max = DFA204_max;
            this.accept = DFA204_accept;
            this.special = DFA204_special;
            this.transition = DFA204_transition;
        }
        public String getDescription() {
            return "10267:1: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? '|' ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA204_0 = input.LA(1);

                         
                        int index204_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA204_0==RULE_ID) ) {s = 1;}

                        else if ( (LA204_0==19) ) {s = 2;}

                        else if ( (LA204_0==128) && (synpred37_InternalUnicornLanguageDefinition())) {s = 3;}

                        else if ( (LA204_0==105) && (synpred37_InternalUnicornLanguageDefinition())) {s = 4;}

                        else if ( (LA204_0==RULE_STRING||LA204_0==RULE_INT||LA204_0==13||LA204_0==36||LA204_0==80||LA204_0==91||(LA204_0>=94 && LA204_0<=95)||LA204_0==100||LA204_0==106||LA204_0==108||(LA204_0>=111 && LA204_0<=113)||LA204_0==117||(LA204_0>=119 && LA204_0<=125)) ) {s = 5;}

                        else if ( (LA204_0==23) ) {s = 27;}

                         
                        input.seek(index204_0);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA204_1 = input.LA(1);

                         
                        int index204_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred37_InternalUnicornLanguageDefinition()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index204_1);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA204_2 = input.LA(1);

                         
                        int index204_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred37_InternalUnicornLanguageDefinition()) ) {s = 4;}

                        else if ( (true) ) {s = 5;}

                         
                        input.seek(index204_2);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 204, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA206_eotS =
        "\120\uffff";
    static final String DFA206_eofS =
        "\1\31\117\uffff";
    static final String DFA206_minS =
        "\1\4\30\0\67\uffff";
    static final String DFA206_maxS =
        "\1\u0080\30\0\67\uffff";
    static final String DFA206_acceptS =
        "\31\uffff\1\2\65\uffff\1\1";
    static final String DFA206_specialS =
        "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1"+
        "\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\67\uffff}>";
    static final String[] DFA206_transitionS = {
            "\1\17\1\1\1\15\5\uffff\1\31\1\6\1\31\4\uffff\1\30\1\uffff\1"+
            "\31\1\uffff\1\31\4\uffff\1\31\1\uffff\5\31\1\uffff\1\12\2\31"+
            "\10\uffff\1\31\1\uffff\1\31\1\uffff\1\31\1\uffff\1\31\6\uffff"+
            "\2\31\4\uffff\2\31\1\uffff\2\31\1\uffff\3\31\5\uffff\1\5\1\uffff"+
            "\11\31\1\10\2\31\1\4\1\3\4\31\1\2\4\31\1\uffff\1\21\1\31\1\7"+
            "\2\31\1\22\1\23\1\24\3\31\1\11\1\uffff\1\13\1\14\1\16\1\20\1"+
            "\25\1\26\1\27\3\31",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA206_eot = DFA.unpackEncodedString(DFA206_eotS);
    static final short[] DFA206_eof = DFA.unpackEncodedString(DFA206_eofS);
    static final char[] DFA206_min = DFA.unpackEncodedStringToUnsignedChars(DFA206_minS);
    static final char[] DFA206_max = DFA.unpackEncodedStringToUnsignedChars(DFA206_maxS);
    static final short[] DFA206_accept = DFA.unpackEncodedString(DFA206_acceptS);
    static final short[] DFA206_special = DFA.unpackEncodedString(DFA206_specialS);
    static final short[][] DFA206_transition;

    static {
        int numStates = DFA206_transitionS.length;
        DFA206_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA206_transition[i] = DFA.unpackEncodedString(DFA206_transitionS[i]);
        }
    }

    class DFA206 extends DFA {

        public DFA206(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 206;
            this.eot = DFA206_eot;
            this.eof = DFA206_eof;
            this.min = DFA206_min;
            this.max = DFA206_max;
            this.accept = DFA206_accept;
            this.special = DFA206_special;
            this.transition = DFA206_transition;
        }
        public String getDescription() {
            return "10643:1: ( ( ( ruleXExpression ) )=> (lv_expression_2_0= ruleXExpression ) )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA206_1 = input.LA(1);

                         
                        int index206_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_1);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA206_2 = input.LA(1);

                         
                        int index206_2 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_2);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA206_3 = input.LA(1);

                         
                        int index206_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_3);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA206_4 = input.LA(1);

                         
                        int index206_4 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_4);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA206_5 = input.LA(1);

                         
                        int index206_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_5);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA206_6 = input.LA(1);

                         
                        int index206_6 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_6);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA206_7 = input.LA(1);

                         
                        int index206_7 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_7);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA206_8 = input.LA(1);

                         
                        int index206_8 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_8);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA206_9 = input.LA(1);

                         
                        int index206_9 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_9);
                        if ( s>=0 ) return s;
                        break;
                    case 9 : 
                        int LA206_10 = input.LA(1);

                         
                        int index206_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_10);
                        if ( s>=0 ) return s;
                        break;
                    case 10 : 
                        int LA206_11 = input.LA(1);

                         
                        int index206_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_11);
                        if ( s>=0 ) return s;
                        break;
                    case 11 : 
                        int LA206_12 = input.LA(1);

                         
                        int index206_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_12);
                        if ( s>=0 ) return s;
                        break;
                    case 12 : 
                        int LA206_13 = input.LA(1);

                         
                        int index206_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_13);
                        if ( s>=0 ) return s;
                        break;
                    case 13 : 
                        int LA206_14 = input.LA(1);

                         
                        int index206_14 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_14);
                        if ( s>=0 ) return s;
                        break;
                    case 14 : 
                        int LA206_15 = input.LA(1);

                         
                        int index206_15 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_15);
                        if ( s>=0 ) return s;
                        break;
                    case 15 : 
                        int LA206_16 = input.LA(1);

                         
                        int index206_16 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_16);
                        if ( s>=0 ) return s;
                        break;
                    case 16 : 
                        int LA206_17 = input.LA(1);

                         
                        int index206_17 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_17);
                        if ( s>=0 ) return s;
                        break;
                    case 17 : 
                        int LA206_18 = input.LA(1);

                         
                        int index206_18 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_18);
                        if ( s>=0 ) return s;
                        break;
                    case 18 : 
                        int LA206_19 = input.LA(1);

                         
                        int index206_19 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_19);
                        if ( s>=0 ) return s;
                        break;
                    case 19 : 
                        int LA206_20 = input.LA(1);

                         
                        int index206_20 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_20);
                        if ( s>=0 ) return s;
                        break;
                    case 20 : 
                        int LA206_21 = input.LA(1);

                         
                        int index206_21 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_21);
                        if ( s>=0 ) return s;
                        break;
                    case 21 : 
                        int LA206_22 = input.LA(1);

                         
                        int index206_22 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_22);
                        if ( s>=0 ) return s;
                        break;
                    case 22 : 
                        int LA206_23 = input.LA(1);

                         
                        int index206_23 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_23);
                        if ( s>=0 ) return s;
                        break;
                    case 23 : 
                        int LA206_24 = input.LA(1);

                         
                        int index206_24 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred38_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 25;}

                         
                        input.seek(index206_24);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 206, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA215_eotS =
        "\120\uffff";
    static final String DFA215_eofS =
        "\1\2\117\uffff";
    static final String DFA215_minS =
        "\1\4\1\0\116\uffff";
    static final String DFA215_maxS =
        "\1\u0080\1\0\116\uffff";
    static final String DFA215_acceptS =
        "\2\uffff\1\2\114\uffff\1\1";
    static final String DFA215_specialS =
        "\1\uffff\1\0\116\uffff}>";
    static final String[] DFA215_transitionS = {
            "\3\2\5\uffff\3\2\4\uffff\1\2\1\uffff\1\2\1\uffff\1\2\4\uffff"+
            "\1\2\1\uffff\5\2\1\uffff\3\2\10\uffff\1\2\1\uffff\1\2\1\uffff"+
            "\1\2\1\uffff\1\2\6\uffff\2\2\4\uffff\2\2\1\uffff\2\2\1\uffff"+
            "\3\2\5\uffff\1\2\1\uffff\11\2\1\1\15\2\1\uffff\14\2\1\uffff"+
            "\12\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA215_eot = DFA.unpackEncodedString(DFA215_eotS);
    static final short[] DFA215_eof = DFA.unpackEncodedString(DFA215_eofS);
    static final char[] DFA215_min = DFA.unpackEncodedStringToUnsignedChars(DFA215_minS);
    static final char[] DFA215_max = DFA.unpackEncodedStringToUnsignedChars(DFA215_maxS);
    static final short[] DFA215_accept = DFA.unpackEncodedString(DFA215_acceptS);
    static final short[] DFA215_special = DFA.unpackEncodedString(DFA215_specialS);
    static final short[][] DFA215_transition;

    static {
        int numStates = DFA215_transitionS.length;
        DFA215_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA215_transition[i] = DFA.unpackEncodedString(DFA215_transitionS[i]);
        }
    }

    class DFA215 extends DFA {

        public DFA215(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 215;
            this.eot = DFA215_eot;
            this.eof = DFA215_eof;
            this.min = DFA215_min;
            this.max = DFA215_max;
            this.accept = DFA215_accept;
            this.special = DFA215_special;
            this.transition = DFA215_transition;
        }
        public String getDescription() {
            return "11067:2: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA215_1 = input.LA(1);

                         
                        int index215_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred43_InternalUnicornLanguageDefinition()) ) {s = 79;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index215_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 215, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    public static final BitSet FOLLOW_ruleModule_in_entryRuleModule75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModule85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLanguageDef_in_ruleModule132 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLibrary_in_ruleModule159 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLibrary_in_entryRuleLibrary194 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLibrary204 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleLibrary241 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleLibrary262 = new BitSet(new long[]{0x302A8007CC001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleParentLanguages_in_ruleLibrary283 = new BitSet(new long[]{0x302A8007CC001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleImportStatement_in_ruleLibrary305 = new BitSet(new long[]{0x302A8007C8001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleModuleItem_in_ruleLibrary328 = new BitSet(new long[]{0x302A8007C0001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleLibrary355 = new BitSet(new long[]{0x302A8007C0001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleModuleItem_in_entryRuleModuleItem393 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModuleItem403 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExpressionableModuleItem_in_ruleModuleItem450 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNonExpressionModuleItem_in_ruleModuleItem477 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExpressionableModuleItem_in_entryRuleExpressionableModuleItem512 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExpressionableModuleItem522 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleColorDef_in_ruleExpressionableModuleItem568 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNonExpressionModuleItem_in_entryRuleNonExpressionModuleItem602 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNonExpressionModuleItem612 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamespace_in_ruleNonExpressionModuleItem659 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleToolGroup_in_ruleNonExpressionModuleItem686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleToolItem_in_ruleNonExpressionModuleItem713 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementDef_in_ruleNonExpressionModuleItem740 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFigureDef_in_ruleNonExpressionModuleItem767 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecoratorDef_in_ruleNonExpressionModuleItem794 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConnectionStyleDef_in_ruleNonExpressionModuleItem821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePolicyDef_in_ruleNonExpressionModuleItem848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidatorDef_in_ruleNonExpressionModuleItem875 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecoratorLocatorDef_in_ruleNonExpressionModuleItem902 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleViewDef_in_ruleNonExpressionModuleItem929 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamespace_in_entryRuleNamespace964 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamespace974 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_ruleNamespace1011 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleNamespace1032 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleNamespace1044 = new BitSet(new long[]{0x302A8007C0005000L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleModuleItem_in_ruleNamespace1066 = new BitSet(new long[]{0x302A8007C0005000L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleNamespace1093 = new BitSet(new long[]{0x302A8007C0005000L,0x001800000000076CL});
    public static final BitSet FOLLOW_14_in_ruleNamespace1107 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLanguageDef_in_entryRuleLanguageDef1143 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLanguageDef1153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleLanguageDef1190 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleLanguageDef1212 = new BitSet(new long[]{0x302A8007DF051002L,0x001800000000076CL});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLanguageDef1235 = new BitSet(new long[]{0x302A8007DF051002L,0x001800000000076CL});
    public static final BitSet FOLLOW_16_in_ruleLanguageDef1254 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLanguageDef1266 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLanguageDef1283 = new BitSet(new long[]{0x302A8007DF041002L,0x001800000000076CL});
    public static final BitSet FOLLOW_18_in_ruleLanguageDef1303 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLanguageDef1315 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleLanguageDef1327 = new BitSet(new long[]{0x0000000000D00000L});
    public static final BitSet FOLLOW_20_in_ruleLanguageDef1340 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleLanguageDef1352 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleLanguageDef1375 = new BitSet(new long[]{0x0000000000C00000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLanguageDef1390 = new BitSet(new long[]{0x0000000000C00000L});
    public static final BitSet FOLLOW_22_in_ruleLanguageDef1413 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleLanguageDef1425 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleLanguageDef1448 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLanguageDef1463 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleLanguageDef1485 = new BitSet(new long[]{0x302A8007DF001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_24_in_ruleLanguageDef1500 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLanguageDef1512 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLanguageDef1529 = new BitSet(new long[]{0x302A8007DE001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_25_in_ruleLanguageDef1549 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLanguageDef1561 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLanguageDef1578 = new BitSet(new long[]{0x302A8007DC001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleParentLanguages_in_ruleLanguageDef1606 = new BitSet(new long[]{0x302A8007DC001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleImportStatement_in_ruleLanguageDef1628 = new BitSet(new long[]{0x302A8007D8001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleModuleItem_in_ruleLanguageDef1651 = new BitSet(new long[]{0x302A8007D0001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleLanguageDef1678 = new BitSet(new long[]{0x302A8007D0001002L,0x001800000000076CL});
    public static final BitSet FOLLOW_ruleToolBox_in_ruleLanguageDef1701 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParentLanguages_in_entryRuleParentLanguages1738 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParentLanguages1748 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleParentLanguages1785 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleParentLanguages1802 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImportStatement_in_entryRuleImportStatement1843 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImportStatement1853 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleImportStatement1890 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedNameWildCard_in_ruleImportStatement1911 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleToolBox_in_entryRuleToolBox1947 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleToolBox1957 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleToolBox2003 = new BitSet(new long[]{0x0000000000200020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleToolBox2020 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleToolBox2038 = new BitSet(new long[]{0x0000000820000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXGroupExpression_in_ruleToolBox2060 = new BitSet(new long[]{0x0000000820000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleToolView_in_ruleToolBox2087 = new BitSet(new long[]{0x0000000820000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_29_in_ruleToolBox2109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleToolGroup_in_entryRuleToolGroup2146 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleToolGroup2156 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleToolGroup2202 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleToolGroup2223 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleToolGroup2235 = new BitSet(new long[]{0x00000000A0000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_31_in_ruleToolGroup2248 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleToolGroup2260 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleToolGroup2277 = new BitSet(new long[]{0x0000000020000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXToolItemExpression_in_ruleToolGroup2305 = new BitSet(new long[]{0x0000000020000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_29_in_ruleToolGroup2326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleToolItem_in_entryRuleToolItem2363 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleToolItem2373 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleToolItem2455 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleToolItem2477 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleToolItem2500 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleToolItem2518 = new BitSet(new long[]{0x0000000780000002L});
    public static final BitSet FOLLOW_31_in_ruleToolItem2531 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleToolItem2543 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleToolItem2560 = new BitSet(new long[]{0x0000000700000002L});
    public static final BitSet FOLLOW_33_in_ruleToolItem2635 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleToolItem2647 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleToolItem2664 = new BitSet(new long[]{0x0000000700000002L});
    public static final BitSet FOLLOW_34_in_ruleToolItem2737 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleToolItem2749 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleToolItem2772 = new BitSet(new long[]{0x0000000700000002L});
    public static final BitSet FOLLOW_ruleToolView_in_entryRuleToolView2854 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleToolView2864 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleToolView2901 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleToolView2922 = new BitSet(new long[]{0x0000001000200000L});
    public static final BitSet FOLLOW_36_in_ruleToolView2935 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_ruleToolViewParameter_in_ruleToolView2956 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_37_in_ruleToolView2969 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_ruleToolViewParameter_in_ruleToolView2990 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_38_in_ruleToolView3004 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleToolView3018 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleToolView3041 = new BitSet(new long[]{0x0000002000000002L});
    public static final BitSet FOLLOW_37_in_ruleToolView3054 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleToolView3077 = new BitSet(new long[]{0x0000002000000002L});
    public static final BitSet FOLLOW_ruleTagDef_in_entryRuleTagDef3115 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTagDef3125 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePredefinedTagDef_in_ruleTagDef3172 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCustomTagDef_in_ruleTagDef3199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCustomTagDef_in_entryRuleCustomTagDef3234 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCustomTagDef3244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCustomTagDef3288 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleCustomTagDef3308 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleCustomTagDef3328 = new BitSet(new long[]{0x0000000000004030L});
    public static final BitSet FOLLOW_ruleTagEntryDef_in_ruleCustomTagDef3349 = new BitSet(new long[]{0x0000000000004030L});
    public static final BitSet FOLLOW_14_in_ruleCustomTagDef3362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePredefinedTagDef_in_entryRulePredefinedTagDef3398 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePredefinedTagDef3408 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_rulePredefinedTagDef3453 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_40_in_rulePredefinedTagDef3482 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_rulePredefinedTagDef3510 = new BitSet(new long[]{0x0000000000004030L});
    public static final BitSet FOLLOW_ruleTagEntryDef_in_rulePredefinedTagDef3531 = new BitSet(new long[]{0x0000000000004030L});
    public static final BitSet FOLLOW_14_in_rulePredefinedTagDef3544 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTagEntryDef_in_entryRuleTagEntryDef3580 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTagEntryDef3590 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleTagEntryDef3638 = new BitSet(new long[]{0x0000001000220002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTagEntryDef3653 = new BitSet(new long[]{0x0000001000220002L});
    public static final BitSet FOLLOW_36_in_ruleTagEntryDef3674 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000000L,0x00000000000007F8L});
    public static final BitSet FOLLOW_ruleTagEntryDefParameter_in_ruleTagEntryDef3695 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_37_in_ruleTagEntryDef3708 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000000L,0x00000000000007F8L});
    public static final BitSet FOLLOW_ruleTagEntryDefParameter_in_ruleTagEntryDef3729 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_38_in_ruleTagEntryDef3743 = new BitSet(new long[]{0x0000000000220002L});
    public static final BitSet FOLLOW_21_in_ruleTagEntryDef3764 = new BitSet(new long[]{0x00003E0000000000L});
    public static final BitSet FOLLOW_41_in_ruleTagEntryDef3797 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_42_in_ruleTagEntryDef3826 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_43_in_ruleTagEntryDef3855 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_44_in_ruleTagEntryDef3884 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_45_in_ruleTagEntryDef3913 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleTagEntryDef3944 = new BitSet(new long[]{0x0000401000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleTagEntryDef3966 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleTagEntryDef3985 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXReferenceExpression_in_ruleTagEntryDef4006 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementDef_in_entryRuleElementDef4046 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElementDef4056 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntityDef_in_ruleElementDef4103 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRelationDef_in_ruleElementDef4130 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntityDef_in_entryRuleEntityDef4165 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntityDef4175 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleEntityDef4221 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntityDef4238 = new BitSet(new long[]{0x0001000000200000L});
    public static final BitSet FOLLOW_48_in_ruleEntityDef4262 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleEntityDef4298 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleEntityDef4312 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleEntityDef4324 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleEntityDef4336 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleEntityDef4353 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_24_in_ruleEntityDef4416 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleEntityDef4428 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleEntityDef4445 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_25_in_ruleEntityDef4518 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleEntityDef4530 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleEntityDef4547 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_49_in_ruleEntityDef4620 = new BitSet(new long[]{0x0000001000020000L});
    public static final BitSet FOLLOW_36_in_ruleEntityDef4633 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000000000F1800L});
    public static final BitSet FOLLOW_ruleElementFigureParameter_in_ruleEntityDef4654 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_37_in_ruleEntityDef4667 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000000000F1800L});
    public static final BitSet FOLLOW_ruleElementFigureParameter_in_ruleEntityDef4688 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_38_in_ruleEntityDef4702 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleEntityDef4716 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXFigureExpression_in_ruleEntityDef4737 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_35_in_ruleEntityDef4805 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleEntityDef4817 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXViewExpression_in_ruleEntityDef4838 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_50_in_ruleEntityDef4906 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleEntityDef4918 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleEntityDef4941 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleEntityDef4956 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_rulePolicies_in_ruleEntityDef5040 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_ruleTagDef_in_ruleEntityDef5115 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_29_in_ruleEntityDef5176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRelationDef_in_entryRuleRelationDef5213 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRelationDef5223 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleRelationDef5269 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRelationDef5286 = new BitSet(new long[]{0x0001000000200000L});
    public static final BitSet FOLLOW_48_in_ruleRelationDef5310 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRelationDef5346 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleRelationDef5360 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_31_in_ruleRelationDef5372 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationDef5384 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRelationDef5401 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_24_in_ruleRelationDef5464 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationDef5476 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRelationDef5493 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_25_in_ruleRelationDef5566 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationDef5578 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRelationDef5595 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_49_in_ruleRelationDef5668 = new BitSet(new long[]{0x0000001000020000L});
    public static final BitSet FOLLOW_36_in_ruleRelationDef5681 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000000000F1800L});
    public static final BitSet FOLLOW_ruleElementFigureParameter_in_ruleRelationDef5702 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_37_in_ruleRelationDef5715 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000000000F1800L});
    public static final BitSet FOLLOW_ruleElementFigureParameter_in_ruleRelationDef5736 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_38_in_ruleRelationDef5750 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationDef5764 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXFigureExpression_in_ruleRelationDef5785 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_35_in_ruleRelationDef5853 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationDef5865 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXViewExpression_in_ruleRelationDef5886 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_50_in_ruleRelationDef5954 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationDef5966 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRelationDef5989 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRelationDef6004 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_rulePolicies_in_ruleRelationDef6088 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_ruleTagDef_in_ruleRelationDef6163 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_29_in_ruleRelationDef6224 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePolicies_in_entryRulePolicies6261 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePolicies6271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_rulePolicies6317 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_rulePolicies6329 = new BitSet(new long[]{0x0000000000004000L,0x0000000000010400L});
    public static final BitSet FOLLOW_ruleXPolicyExpression_in_rulePolicies6350 = new BitSet(new long[]{0x0000000000004000L,0x0000000000010400L});
    public static final BitSet FOLLOW_14_in_rulePolicies6363 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleViewDef_in_entryRuleViewDef6399 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleViewDef6409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNodeViewDef_in_ruleViewDef6456 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLabelViewDef_in_ruleViewDef6483 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCompartmentViewDef_in_ruleViewDef6510 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRelationViewDef_in_ruleViewDef6537 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNodeViewDef_in_entryRuleNodeViewDef6572 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNodeViewDef6582 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleNodeViewDef6625 = new BitSet(new long[]{0x0000000000200022L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNodeViewDef6656 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleNodeViewDef6674 = new BitSet(new long[]{0x00C0000020000000L});
    public static final BitSet FOLLOW_54_in_ruleNodeViewDef6687 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleNodeViewDef6699 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleNodeViewDef6722 = new BitSet(new long[]{0x0080000020000000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleNodeViewDef6737 = new BitSet(new long[]{0x0080000020000000L});
    public static final BitSet FOLLOW_55_in_ruleNodeViewDef6760 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleSubViewDef_in_ruleNodeViewDef6781 = new BitSet(new long[]{0x0080000020000000L});
    public static final BitSet FOLLOW_29_in_ruleNodeViewDef6803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLabelViewDef_in_entryRuleLabelViewDef6842 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLabelViewDef6852 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleLabelViewDef6895 = new BitSet(new long[]{0x0000000000200022L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleLabelViewDef6926 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleLabelViewDef6944 = new BitSet(new long[]{0x0F40000020000000L});
    public static final BitSet FOLLOW_54_in_ruleLabelViewDef7002 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLabelViewDef7014 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleLabelViewDef7037 = new BitSet(new long[]{0x0F40000020000000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLabelViewDef7052 = new BitSet(new long[]{0x0F40000020000000L});
    public static final BitSet FOLLOW_56_in_ruleLabelViewDef7128 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLabelViewDef7140 = new BitSet(new long[]{0x0000400000000020L});
    public static final BitSet FOLLOW_ruleLabelSourceField_in_ruleLabelViewDef7161 = new BitSet(new long[]{0x0F40002020000000L});
    public static final BitSet FOLLOW_37_in_ruleLabelViewDef7174 = new BitSet(new long[]{0x0000400000000020L});
    public static final BitSet FOLLOW_ruleLabelSourceField_in_ruleLabelViewDef7195 = new BitSet(new long[]{0x0F40002020000000L});
    public static final BitSet FOLLOW_57_in_ruleLabelViewDef7265 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLabelViewDef7277 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLabelViewDef7294 = new BitSet(new long[]{0x0F40000020000000L});
    public static final BitSet FOLLOW_58_in_ruleLabelViewDef7367 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLabelViewDef7379 = new BitSet(new long[]{0x0000400000000020L});
    public static final BitSet FOLLOW_ruleLabelSourceField_in_ruleLabelViewDef7400 = new BitSet(new long[]{0x0F40002020000000L});
    public static final BitSet FOLLOW_37_in_ruleLabelViewDef7413 = new BitSet(new long[]{0x0000400000000020L});
    public static final BitSet FOLLOW_ruleLabelSourceField_in_ruleLabelViewDef7434 = new BitSet(new long[]{0x0F40002020000000L});
    public static final BitSet FOLLOW_59_in_ruleLabelViewDef7504 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLabelViewDef7516 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLabelViewDef7533 = new BitSet(new long[]{0x0F40000020000000L});
    public static final BitSet FOLLOW_29_in_ruleLabelViewDef7599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLabelSourceField_in_entryRuleLabelSourceField7638 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLabelSourceField7648 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleLabelSourceField7692 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleLabelSourceField7722 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleLabelSourceField7757 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCompartmentViewDef_in_entryRuleCompartmentViewDef7793 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCompartmentViewDef7803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_ruleCompartmentViewDef7846 = new BitSet(new long[]{0x0000000000200022L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCompartmentViewDef7877 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleCompartmentViewDef7895 = new BitSet(new long[]{0x0040000020000000L});
    public static final BitSet FOLLOW_54_in_ruleCompartmentViewDef7908 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleCompartmentViewDef7920 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleCompartmentViewDef7943 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleCompartmentViewDef7958 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleCompartmentViewDef7988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRelationViewDef_in_entryRuleRelationViewDef8027 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRelationViewDef8037 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_61_in_ruleRelationViewDef8080 = new BitSet(new long[]{0x8080000020200022L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRelationViewDef8156 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleRelationViewDef8174 = new BitSet(new long[]{0xC0C0000020200022L});
    public static final BitSet FOLLOW_54_in_ruleRelationViewDef8187 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationViewDef8199 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRelationViewDef8222 = new BitSet(new long[]{0xC080000020200022L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRelationViewDef8237 = new BitSet(new long[]{0xC080000020200022L});
    public static final BitSet FOLLOW_62_in_ruleRelationViewDef8260 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationViewDef8272 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXConnectionStyleExpression_in_ruleRelationViewDef8293 = new BitSet(new long[]{0x8080000020200022L});
    public static final BitSet FOLLOW_55_in_ruleRelationViewDef8364 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleSubViewDef_in_ruleRelationViewDef8385 = new BitSet(new long[]{0x8080000020000000L});
    public static final BitSet FOLLOW_ruleRelationConstraint_in_ruleRelationViewDef8408 = new BitSet(new long[]{0x8000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleRelationViewDef8429 = new BitSet(new long[]{0x8080000020200022L});
    public static final BitSet FOLLOW_ruleRelationConstraint_in_entryRuleRelationConstraint8514 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRelationConstraint8524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_63_in_ruleRelationConstraint8561 = new BitSet(new long[]{0x0000000000000020L,0x0000000000000001L});
    public static final BitSet FOLLOW_64_in_ruleRelationConstraint8579 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRelationConstraint8616 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleRelationConstraint8629 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRelationConstraint8652 = new BitSet(new long[]{0x0000002000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_ruleRelationConstraint8666 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRelationConstraint8689 = new BitSet(new long[]{0x0000002000200002L,0x0000000000000004L});
    public static final BitSet FOLLOW_37_in_ruleRelationConstraint8702 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleRelationConstraint8725 = new BitSet(new long[]{0x0000002000200002L,0x0000000000000004L});
    public static final BitSet FOLLOW_21_in_ruleRelationConstraint8785 = new BitSet(new long[]{0x4000000000200002L,0x0000000000000004L});
    public static final BitSet FOLLOW_62_in_ruleRelationConstraint8798 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationConstraint8810 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXConnectionStyleExpression_in_ruleRelationConstraint8831 = new BitSet(new long[]{0x0000000000200002L,0x0000000000000004L});
    public static final BitSet FOLLOW_66_in_ruleRelationConstraint8901 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRelationConstraint8913 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXValidatorExpression_in_ruleRelationConstraint8934 = new BitSet(new long[]{0x0000000000200002L,0x0000000000000004L});
    public static final BitSet FOLLOW_ruleConnectionStyleDef_in_entryRuleConnectionStyleDef9019 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConnectionStyleDef9029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_ruleConnectionStyleDef9075 = new BitSet(new long[]{0x0000000000200020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleConnectionStyleDef9096 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleConnectionStyleDef9109 = new BitSet(new long[]{0x4000000020000000L,0x0000000000000070L});
    public static final BitSet FOLLOW_68_in_ruleConnectionStyleDef9173 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleConnectionStyleDef9198 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleConnectionStyleDef9215 = new BitSet(new long[]{0x4000000020000000L,0x0000000000000070L});
    public static final BitSet FOLLOW_62_in_ruleConnectionStyleDef9294 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleConnectionStyleDef9319 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L,0x0000000001F00000L});
    public static final BitSet FOLLOW_ruleLineStyle_in_ruleConnectionStyleDef9340 = new BitSet(new long[]{0x4000000020000000L,0x0000000000000070L});
    public static final BitSet FOLLOW_69_in_ruleConnectionStyleDef9414 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleConnectionStyleDef9439 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXColorExpression_in_ruleConnectionStyleDef9460 = new BitSet(new long[]{0x4000000020000000L,0x0000000000000070L});
    public static final BitSet FOLLOW_ruleConnectionDecorator_in_ruleConnectionStyleDef9536 = new BitSet(new long[]{0x4000000020000000L,0x0000000000000070L});
    public static final BitSet FOLLOW_29_in_ruleConnectionStyleDef9597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConnectionDecorator_in_entryRuleConnectionDecorator9634 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConnectionDecorator9644 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_70_in_ruleConnectionDecorator9681 = new BitSet(new long[]{0x0000001000020000L});
    public static final BitSet FOLLOW_36_in_ruleConnectionDecorator9694 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L,0x0000000000008000L});
    public static final BitSet FOLLOW_ruleDecoratorParameter_in_ruleConnectionDecorator9715 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_37_in_ruleConnectionDecorator9728 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L,0x0000000000008000L});
    public static final BitSet FOLLOW_ruleDecoratorParameter_in_ruleConnectionDecorator9749 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_38_in_ruleConnectionDecorator9763 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleConnectionDecorator9777 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXDecoratorExpression_in_ruleConnectionDecorator9798 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecoratorDef_in_entryRuleDecoratorDef9834 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDecoratorDef9844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_70_in_ruleDecoratorDef9890 = new BitSet(new long[]{0x0001000000000030L,0x0000000000000080L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDecoratorDef9938 = new BitSet(new long[]{0x0001000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDecoratorDef9953 = new BitSet(new long[]{0x0001000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_ruleDecoratorDef9976 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDecoratorDef9999 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDecoratorDef10014 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_48_in_ruleDecoratorDef10042 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDecoratorDef10065 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_21_in_ruleDecoratorDef10080 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_ruleTagDef_in_ruleDecoratorDef10101 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_29_in_ruleDecoratorDef10122 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecoratorLocatorDef_in_entryRuleDecoratorLocatorDef10161 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDecoratorLocatorDef10171 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_72_in_ruleDecoratorLocatorDef10217 = new BitSet(new long[]{0x0001000000000030L,0x0000000000000080L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDecoratorLocatorDef10265 = new BitSet(new long[]{0x0001000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDecoratorLocatorDef10280 = new BitSet(new long[]{0x0001000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_ruleDecoratorLocatorDef10303 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDecoratorLocatorDef10326 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDecoratorLocatorDef10341 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_48_in_ruleDecoratorLocatorDef10369 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDecoratorLocatorDef10392 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_21_in_ruleDecoratorLocatorDef10407 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_ruleTagDef_in_ruleDecoratorLocatorDef10428 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_29_in_ruleDecoratorLocatorDef10449 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePolicyDef_in_entryRulePolicyDef10488 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePolicyDef10498 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_73_in_rulePolicyDef10550 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
    public static final BitSet FOLLOW_74_in_rulePolicyDef10576 = new BitSet(new long[]{0x0001001000000020L,0x0000000000000080L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePolicyDef10597 = new BitSet(new long[]{0x0001001000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_36_in_rulePolicyDef10611 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePolicyDef10628 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_rulePolicyDef10645 = new BitSet(new long[]{0x0001000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_rulePolicyDef10661 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePolicyDef10684 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePolicyDef10699 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_48_in_rulePolicyDef10727 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePolicyDef10750 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_21_in_rulePolicyDef10765 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_ruleTagDef_in_rulePolicyDef10786 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_29_in_rulePolicyDef10807 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubViewDef_in_entryRuleSubViewDef10846 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSubViewDef10856 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleSubViewDef10904 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleSubViewDef10919 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleSubViewDef10939 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXViewExpression_in_ruleSubViewDef10960 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFigureDef_in_entryRuleFigureDef10996 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFigureDef11006 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleFigureDef11060 = new BitSet(new long[]{0x0001000000200022L,0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFigureDef11078 = new BitSet(new long[]{0x0001000000200002L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_ruleFigureDef11098 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleFigureDef11121 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFigureDef11136 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_48_in_ruleFigureDef11170 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleFigureDef11206 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_21_in_ruleFigureDef11222 = new BitSet(new long[]{0x0096018823000030L});
    public static final BitSet FOLLOW_55_in_ruleFigureDef11235 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleSubFigure_in_ruleFigureDef11256 = new BitSet(new long[]{0x0096018823000030L});
    public static final BitSet FOLLOW_ruleTagDef_in_ruleFigureDef11279 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_29_in_ruleFigureDef11300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubFigure_in_entryRuleSubFigure11339 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSubFigure11349 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleSubFigure11397 = new BitSet(new long[]{0x0000001000020000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleSubFigure11412 = new BitSet(new long[]{0x0000001000020000L});
    public static final BitSet FOLLOW_36_in_ruleSubFigure11433 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000000000F7800L});
    public static final BitSet FOLLOW_ruleLayoutParameter_in_ruleSubFigure11454 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_37_in_ruleSubFigure11467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000000000F7800L});
    public static final BitSet FOLLOW_ruleLayoutParameter_in_ruleSubFigure11488 = new BitSet(new long[]{0x0000006000000000L});
    public static final BitSet FOLLOW_38_in_ruleSubFigure11502 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleSubFigure11516 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXFigureExpression_in_ruleSubFigure11537 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleToolViewParameter_in_entryRuleToolViewParameter11573 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleToolViewParameter11583 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleToolViewExpNameID_in_ruleToolViewParameter11629 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleToolViewParameter11641 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleToolViewParameter11662 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTagEntryDefParameter_in_entryRuleTagEntryDefParameter11698 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTagEntryDefParameter11708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTagEntryDefExpParameterID_in_ruleTagEntryDefParameter11754 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleTagEntryDefParameter11766 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleTagEntryDefParameter11787 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLayoutParameter_in_entryRuleLayoutParameter11823 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLayoutParameter11833 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLayoutExpParameterNameID_in_ruleLayoutParameter11880 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleLayoutParameter11892 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleLayoutParameter11913 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDockParameterNameID_in_ruleLayoutParameter11942 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleLayoutParameter11954 = new BitSet(new long[]{0x0000000000000000L,0x000000000000F800L,0x0000000002000000L});
    public static final BitSet FOLLOW_ruleDockType_in_ruleLayoutParameter11975 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoundParameterNameID_in_ruleLayoutParameter12004 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleLayoutParameter12016 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_ruleXRectangle_in_ruleLayoutParameter12037 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnchorNameID_in_ruleLayoutParameter12066 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleLayoutParameter12078 = new BitSet(new long[]{0x0000000000000000L,0x000000000000F800L});
    public static final BitSet FOLLOW_ruleAnchor_in_ruleLayoutParameter12099 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecoratorParameter_in_entryRuleDecoratorParameter12136 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDecoratorParameter12146 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLocationNameID_in_ruleDecoratorParameter12193 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleDecoratorParameter12205 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x000000000C000000L});
    public static final BitSet FOLLOW_ruleDecoratorLocation_in_ruleDecoratorParameter12226 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLocatorParameterNameID_in_ruleDecoratorParameter12255 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleDecoratorParameter12267 = new BitSet(new long[]{0x0000000000000020L,0x0000000000010000L});
    public static final BitSet FOLLOW_ruleXLocatorExpression_in_ruleDecoratorParameter12288 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementFigureParameter_in_entryRuleElementFigureParameter12325 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElementFigureParameter12335 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementFigureExpNameID_in_ruleElementFigureParameter12382 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleElementFigureParameter12394 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleElementFigureParameter12415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoundParameterNameID_in_ruleElementFigureParameter12444 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleElementFigureParameter12456 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_ruleXRectangle_in_ruleElementFigureParameter12477 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleColorDef_in_entryRuleColorDef12514 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleColorDef12524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_69_in_ruleColorDef12561 = new BitSet(new long[]{0x0000000000080020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleColorDef12579 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleColorDef12596 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleColorDef12611 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleColorDef12628 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleColorDef12645 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleColorDef12662 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleColorDef12679 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleColorDef12696 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_37_in_ruleColorDef12714 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleColorDef12731 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleColorDef12750 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidatorDef_in_entryRuleValidatorDef12787 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValidatorDef12797 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_66_in_ruleValidatorDef12834 = new BitSet(new long[]{0x0001000000000030L,0x0000000000000080L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleValidatorDef12857 = new BitSet(new long[]{0x0001000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleValidatorDef12872 = new BitSet(new long[]{0x0001000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_71_in_ruleValidatorDef12895 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleValidatorDef12918 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleValidatorDef12933 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_48_in_ruleValidatorDef12961 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleValidatorDef12984 = new BitSet(new long[]{0x0000000000200002L});
    public static final BitSet FOLLOW_21_in_ruleValidatorDef12999 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_ruleTagDef_in_ruleValidatorDef13020 = new BitSet(new long[]{0x0016018823000030L});
    public static final BitSet FOLLOW_29_in_ruleValidatorDef13041 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnchor_in_entryRuleAnchor13080 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAnchor13090 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_75_in_ruleAnchor13188 = new BitSet(new long[]{0x0000000000000002L,0x0000000000007800L});
    public static final BitSet FOLLOW_76_in_ruleAnchor13273 = new BitSet(new long[]{0x0000000000000002L,0x0000000000007800L});
    public static final BitSet FOLLOW_77_in_ruleAnchor13358 = new BitSet(new long[]{0x0000000000000002L,0x0000000000007800L});
    public static final BitSet FOLLOW_78_in_ruleAnchor13443 = new BitSet(new long[]{0x0000000000000002L,0x0000000000007800L});
    public static final BitSet FOLLOW_79_in_ruleAnchor13520 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXRectangle_in_entryRuleXRectangle13557 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXRectangle13567 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleXRectangle13604 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXRectangle13625 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleXRectangle13637 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXRectangle13658 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_37_in_ruleXRectangle13671 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXRectangle13692 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleXRectangle13704 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXRectangle13725 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleXRectangle13739 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXReferenceExpression_in_entryRuleXReferenceExpression13775 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXReferenceExpression13785 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXReferenceExpression13833 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXReferenceExpression13858 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000120L});
    public static final BitSet FOLLOW_ruleColorDef_in_ruleXReferenceExpression13894 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDecoratorLocatorDef_in_ruleXReferenceExpression13913 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXColorExpression_in_entryRuleXColorExpression13953 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXColorExpression13963 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXColorExpression14011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXColorExpression14036 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_ruleColorDef_in_ruleXColorExpression14070 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFigureExpression_in_entryRuleXFigureExpression14107 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFigureExpression14117 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXFigureExpression14165 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXFigureExpression14190 = new BitSet(new long[]{0x0002000000000000L});
    public static final BitSet FOLLOW_ruleFigureDef_in_ruleXFigureExpression14224 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXGroupExpression_in_entryRuleXGroupExpression14261 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXGroupExpression14271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXGroupExpression14319 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXGroupExpression14344 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_ruleToolGroup_in_ruleXGroupExpression14378 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXToolItemExpression_in_entryRuleXToolItemExpression14415 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXToolItemExpression14425 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXToolItemExpression14473 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXToolItemExpression14498 = new BitSet(new long[]{0x0000000700000000L});
    public static final BitSet FOLLOW_ruleToolItem_in_ruleXToolItemExpression14532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXViewExpression_in_entryRuleXViewExpression14569 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXViewExpression14579 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXViewExpression14627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXViewExpression14652 = new BitSet(new long[]{0x302A8007C0001000L,0x000000000000076CL});
    public static final BitSet FOLLOW_ruleViewDef_in_ruleXViewExpression14686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXConnectionStyleExpression_in_entryRuleXConnectionStyleExpression14723 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXConnectionStyleExpression14733 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXConnectionStyleExpression14781 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXConnectionStyleExpression14806 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_ruleConnectionStyleDef_in_ruleXConnectionStyleExpression14840 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXPolicyExpression_in_entryRuleXPolicyExpression14877 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXPolicyExpression14887 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_74_in_ruleXPolicyExpression14925 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXPolicyExpression14948 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXPolicyExpression14974 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000600L});
    public static final BitSet FOLLOW_rulePolicyDef_in_ruleXPolicyExpression15008 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXDecoratorExpression_in_entryRuleXDecoratorExpression15045 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXDecoratorExpression15055 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXDecoratorExpression15103 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXDecoratorExpression15128 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
    public static final BitSet FOLLOW_ruleDecoratorDef_in_ruleXDecoratorExpression15162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXValidatorExpression_in_entryRuleXValidatorExpression15199 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXValidatorExpression15209 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXValidatorExpression15257 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXValidatorExpression15282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_ruleValidatorDef_in_ruleXValidatorExpression15316 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLocatorExpression_in_entryRuleXLocatorExpression15353 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXLocatorExpression15363 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXLocatorExpression15411 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXLocatorExpression15436 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_ruleDecoratorLocatorDef_in_ruleXLocatorExpression15470 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWildCard_in_entryRuleQualifiedNameWildCard15508 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWildCard15519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWildCard15566 = new BitSet(new long[]{0x0000000000000002L,0x0000000000020000L});
    public static final BitSet FOLLOW_81_in_ruleQualifiedNameWildCard15585 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression15627 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXExpression15637 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression15683 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment15717 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment15727 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXAssignment15785 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_ruleXAssignment15801 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXAssignment15821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOrExpression_in_ruleXAssignment15851 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
    public static final BitSet FOLLOW_ruleOpMultiAssign_in_ruleXAssignment15904 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXAssignment15927 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign15967 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign15978 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleOpSingleAssign16015 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign16055 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign16066 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_82_in_ruleOpMultiAssign16103 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression16142 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression16152 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAndExpression_in_ruleXOrExpression16199 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
    public static final BitSet FOLLOW_ruleOpOr_in_ruleXOrExpression16252 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXAndExpression_in_ruleXOrExpression16275 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
    public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr16314 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpOr16325 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_83_in_ruleOpOr16362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression16401 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression16411 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression16458 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
    public static final BitSet FOLLOW_ruleOpAnd_in_ruleXAndExpression16511 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression16534 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
    public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd16573 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd16584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_84_in_ruleOpAnd16621 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression16660 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression16670 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression16717 = new BitSet(new long[]{0x0000000000000002L,0x0000000000600000L});
    public static final BitSet FOLLOW_ruleOpEquality_in_ruleXEqualityExpression16770 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression16793 = new BitSet(new long[]{0x0000000000000002L,0x0000000000600000L});
    public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality16832 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality16843 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_85_in_ruleOpEquality16881 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_86_in_ruleOpEquality16900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression16940 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression16950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression16997 = new BitSet(new long[]{0x0000000000000002L,0x000000000F800000L});
    public static final BitSet FOLLOW_87_in_ruleXRelationalExpression17033 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXRelationalExpression17058 = new BitSet(new long[]{0x0000000000000002L,0x000000000F800000L});
    public static final BitSet FOLLOW_ruleOpCompare_in_ruleXRelationalExpression17119 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression17142 = new BitSet(new long[]{0x0000000000000002L,0x000000000F800000L});
    public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare17182 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare17193 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_88_in_ruleOpCompare17231 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_89_in_ruleOpCompare17250 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_90_in_ruleOpCompare17269 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_91_in_ruleOpCompare17288 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression17328 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression17338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression17385 = new BitSet(new long[]{0x0000000000000002L,0x0000000030000000L});
    public static final BitSet FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression17438 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression17461 = new BitSet(new long[]{0x0000000000000002L,0x0000000030000000L});
    public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther17500 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpOther17511 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_92_in_ruleOpOther17549 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_93_in_ruleOpOther17568 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression17608 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression17618 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression17665 = new BitSet(new long[]{0x0000000000000002L,0x00000000C0000000L});
    public static final BitSet FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression17718 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression17741 = new BitSet(new long[]{0x0000000000000002L,0x00000000C0000000L});
    public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd17780 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd17791 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_94_in_ruleOpAdd17829 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_95_in_ruleOpAdd17848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression17888 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression17898 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression17945 = new BitSet(new long[]{0x0000000000000002L,0x0000000F00000000L});
    public static final BitSet FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression17998 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression18021 = new BitSet(new long[]{0x0000000000000002L,0x0000000F00000000L});
    public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti18060 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti18071 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_96_in_ruleOpMulti18109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_97_in_ruleOpMulti18128 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_98_in_ruleOpMulti18147 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_99_in_ruleOpMulti18166 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation18206 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation18216 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpUnary_in_ruleXUnaryOperation18274 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation18295 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation18324 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary18360 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary18371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_100_in_ruleOpUnary18409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_95_in_ruleOpUnary18428 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_94_in_ruleOpUnary18447 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression18487 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression18497 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_ruleXCastedExpression18544 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
    public static final BitSet FOLLOW_101_in_ruleXCastedExpression18579 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression18602 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
    public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall18640 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall18650 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXPrimaryExpression_in_ruleXMemberFeatureCall18697 = new BitSet(new long[]{0x0000000000000002L,0x000001C000000000L});
    public static final BitSet FOLLOW_102_in_ruleXMemberFeatureCall18746 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXMemberFeatureCall18769 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_ruleXMemberFeatureCall18785 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXAssignment_in_ruleXMemberFeatureCall18807 = new BitSet(new long[]{0x0000000000000002L,0x000001C000000000L});
    public static final BitSet FOLLOW_102_in_ruleXMemberFeatureCall18893 = new BitSet(new long[]{0x0000000000000020L,0x0000000008000000L});
    public static final BitSet FOLLOW_103_in_ruleXMemberFeatureCall18917 = new BitSet(new long[]{0x0000000000000020L,0x0000000008000000L});
    public static final BitSet FOLLOW_104_in_ruleXMemberFeatureCall18954 = new BitSet(new long[]{0x0000000000000020L,0x0000000008000000L});
    public static final BitSet FOLLOW_91_in_ruleXMemberFeatureCall18983 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall19004 = new BitSet(new long[]{0x0000002000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_37_in_ruleXMemberFeatureCall19017 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall19038 = new BitSet(new long[]{0x0000002000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_90_in_ruleXMemberFeatureCall19052 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXMemberFeatureCall19077 = new BitSet(new long[]{0x0000000000080002L,0x000001C000000000L});
    public static final BitSet FOLLOW_19_in_ruleXMemberFeatureCall19111 = new BitSet(new long[]{0x0000001000882070L,0x3FA39610C8010000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXMemberFeatureCall19186 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall19214 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_37_in_ruleXMemberFeatureCall19227 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall19248 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_23_in_ruleXMemberFeatureCall19265 = new BitSet(new long[]{0x0000000000000002L,0x000001C000000000L});
    public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression19306 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression19316 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXConstructorCall_in_ruleXPrimaryExpression19363 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleXPrimaryExpression19390 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXSwitchExpression_in_ruleXPrimaryExpression19417 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFeatureCall_in_ruleXPrimaryExpression19444 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLiteral_in_ruleXPrimaryExpression19471 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIfExpression_in_ruleXPrimaryExpression19498 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXForLoopExpression_in_ruleXPrimaryExpression19525 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXWhileExpression_in_ruleXPrimaryExpression19552 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXDoWhileExpression_in_ruleXPrimaryExpression19579 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXThrowExpression_in_ruleXPrimaryExpression19606 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXReturnExpression_in_ruleXPrimaryExpression19633 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_ruleXPrimaryExpression19660 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_ruleXPrimaryExpression19687 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral19722 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral19732 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_ruleXLiteral19779 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBooleanLiteral_in_ruleXLiteral19806 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIntLiteral_in_ruleXLiteral19833 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNullLiteral_in_ruleXLiteral19860 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStringLiteral_in_ruleXLiteral19887 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTypeLiteral_in_ruleXLiteral19914 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure19949 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXClosure19959 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleXClosure20005 = new BitSet(new long[]{0x0000000000080020L,0x0000020000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXClosure20027 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_37_in_ruleXClosure20040 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXClosure20061 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_105_in_ruleXClosure20077 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXClosure20098 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_ruleXClosure20110 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure20146 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure20156 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure20254 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_37_in_ruleXShortClosure20267 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure20288 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_105_in_ruleXShortClosure20304 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXShortClosure20327 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression20363 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression20373 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleXParenthesizedExpression20410 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXParenthesizedExpression20432 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleXParenthesizedExpression20443 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression20479 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression20489 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_106_in_ruleXIfExpression20535 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXIfExpression20547 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression20568 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleXIfExpression20580 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression20601 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
    public static final BitSet FOLLOW_107_in_ruleXIfExpression20622 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression20644 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression20682 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression20692 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_108_in_ruleXSwitchExpression20738 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXSwitchExpression20760 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleXSwitchExpression20772 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression20795 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleXSwitchExpression20807 = new BitSet(new long[]{0x0000000000280020L,0x0000400000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleXCasePart_in_ruleXSwitchExpression20828 = new BitSet(new long[]{0x0000000000284020L,0x0000600000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_109_in_ruleXSwitchExpression20842 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleXSwitchExpression20854 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression20875 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleXSwitchExpression20889 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart20925 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart20935 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXCasePart20981 = new BitSet(new long[]{0x0000000000200000L,0x0000400000000000L});
    public static final BitSet FOLLOW_110_in_ruleXCasePart20995 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXCasePart21016 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleXCasePart21030 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXCasePart21051 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression21087 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression21097 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_111_in_ruleXForLoopExpression21143 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXForLoopExpression21155 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXForLoopExpression21176 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleXForLoopExpression21188 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForLoopExpression21209 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleXForLoopExpression21221 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXForLoopExpression21242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression21278 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression21288 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_112_in_ruleXWhileExpression21334 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXWhileExpression21346 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXWhileExpression21367 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleXWhileExpression21379 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXWhileExpression21400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression21436 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression21446 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_113_in_ruleXDoWhileExpression21492 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXDoWhileExpression21513 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_112_in_ruleXDoWhileExpression21525 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXDoWhileExpression21537 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXDoWhileExpression21558 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleXDoWhileExpression21570 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression21606 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression21616 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_ruleXBlockExpression21662 = new BitSet(new long[]{0x302A8017C0087070L,0x3FBB9410C801076CL});
    public static final BitSet FOLLOW_ruleXExpressionInsideBlock_in_ruleXBlockExpression21684 = new BitSet(new long[]{0x302A8017C0087070L,0x3FBF9410C801076CL});
    public static final BitSet FOLLOW_114_in_ruleXBlockExpression21697 = new BitSet(new long[]{0x302A8017C0087070L,0x3FBB9410C801076CL});
    public static final BitSet FOLLOW_14_in_ruleXBlockExpression21713 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpressionInsideBlock_in_entryRuleXExpressionInsideBlock21749 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInsideBlock21759 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleXExpressionInsideBlock21806 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXExpressionInsideBlock21833 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration21868 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration21878 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_115_in_ruleXVariableDeclaration21931 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_116_in_ruleXVariableDeclaration21962 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXVariableDeclaration22010 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXVariableDeclaration22031 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleXVariableDeclaration22060 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleXVariableDeclaration22074 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXVariableDeclaration22095 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter22133 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter22143 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmFormalParameter22189 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleJvmFormalParameter22211 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall22247 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall22257 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStaticQualifier_in_ruleXFeatureCall22314 = new BitSet(new long[]{0x0000000000000020L,0x0020000008000000L});
    public static final BitSet FOLLOW_91_in_ruleXFeatureCall22328 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall22349 = new BitSet(new long[]{0x0000002000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_37_in_ruleXFeatureCall22362 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall22383 = new BitSet(new long[]{0x0000002000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_90_in_ruleXFeatureCall22397 = new BitSet(new long[]{0x0000000000000020L,0x0020000008000000L});
    public static final BitSet FOLLOW_ruleIdOrSuper_in_ruleXFeatureCall22422 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_19_in_ruleXFeatureCall22456 = new BitSet(new long[]{0x0000001000882070L,0x3FA39610C8010000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXFeatureCall22531 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXFeatureCall22559 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_37_in_ruleXFeatureCall22572 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXFeatureCall22593 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_23_in_ruleXFeatureCall22610 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper22649 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper22660 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleIdOrSuper22707 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_117_in_ruleIdOrSuper22731 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStaticQualifier_in_entryRuleStaticQualifier22772 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStaticQualifier22783 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleStaticQualifier22830 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
    public static final BitSet FOLLOW_118_in_ruleStaticQualifier22848 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall22889 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall22899 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleXConstructorCall22945 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXConstructorCall22968 = new BitSet(new long[]{0x0000000000080000L,0x0000000008000000L});
    public static final BitSet FOLLOW_91_in_ruleXConstructorCall22981 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall23002 = new BitSet(new long[]{0x0000002000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_37_in_ruleXConstructorCall23015 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall23036 = new BitSet(new long[]{0x0000002000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_90_in_ruleXConstructorCall23050 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXConstructorCall23064 = new BitSet(new long[]{0x0000001000882070L,0x3FA39610C8010000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXConstructorCall23126 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructorCall23154 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_37_in_ruleXConstructorCall23167 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructorCall23188 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_23_in_ruleXConstructorCall23205 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral23241 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral23251 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_119_in_ruleXBooleanLiteral23298 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_120_in_ruleXBooleanLiteral23322 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral23372 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral23382 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_121_in_ruleXNullLiteral23428 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXIntLiteral_in_entryRuleXIntLiteral23464 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXIntLiteral23474 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleXIntLiteral23525 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral23566 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral23576 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleXStringLiteral23627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral23668 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral23678 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_122_in_ruleXTypeLiteral23724 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXTypeLiteral23736 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXTypeLiteral23759 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleXTypeLiteral23771 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression23807 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression23817 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_123_in_ruleXThrowExpression23863 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXThrowExpression23884 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression23920 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression23930 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_124_in_ruleXReturnExpression23976 = new BitSet(new long[]{0x0000001000082072L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXReturnExpression24007 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression24044 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression24054 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_125_in_ruleXTryCatchFinallyExpression24100 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression24121 = new BitSet(new long[]{0x0000000000000000L,0xC000000000000000L});
    public static final BitSet FOLLOW_ruleXCatchClause_in_ruleXTryCatchFinallyExpression24151 = new BitSet(new long[]{0x0000000000000002L,0xC000000000000000L});
    public static final BitSet FOLLOW_126_in_ruleXTryCatchFinallyExpression24173 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression24195 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_126_in_ruleXTryCatchFinallyExpression24217 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression24238 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause24276 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause24286 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_127_in_ruleXCatchClause24331 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleXCatchClause24344 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXCatchClause24365 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleXCatchClause24377 = new BitSet(new long[]{0x0000001000082070L,0x3FA39410C8010000L});
    public static final BitSet FOLLOW_ruleXExpression_in_ruleXCatchClause24398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName24435 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName24446 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleQualifiedName24493 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
    public static final BitSet FOLLOW_102_in_ruleQualifiedName24521 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleValidID_in_ruleQualifiedName24544 = new BitSet(new long[]{0x0000000000000002L,0x0000004000000000L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference24591 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference24601 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_ruleJvmTypeReference24648 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_ruleJvmTypeReference24675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef24710 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef24720 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleXFunctionTypeRef24758 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef24779 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_37_in_ruleXFunctionTypeRef24792 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef24813 = new BitSet(new long[]{0x0000002000800000L});
    public static final BitSet FOLLOW_23_in_ruleXFunctionTypeRef24827 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_128_in_ruleXFunctionTypeRef24841 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef24862 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference24898 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference24908 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleJvmParameterizedTypeReference24956 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
    public static final BitSet FOLLOW_91_in_ruleJvmParameterizedTypeReference24977 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference24999 = new BitSet(new long[]{0x0000002000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_37_in_ruleJvmParameterizedTypeReference25012 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000003L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference25033 = new BitSet(new long[]{0x0000002000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_90_in_ruleJvmParameterizedTypeReference25047 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference25085 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference25095 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmArgumentTypeReference25142 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_ruleJvmArgumentTypeReference25169 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference25204 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference25214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_129_in_ruleJvmWildcardTypeReference25260 = new BitSet(new long[]{0x0001000000000002L,0x0020000000000000L});
    public static final BitSet FOLLOW_ruleJvmUpperBound_in_ruleJvmWildcardTypeReference25282 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmLowerBound_in_ruleJvmWildcardTypeReference25309 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound25347 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound25357 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleJvmUpperBound25394 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBound25415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded25451 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded25461 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_130_in_ruleJvmUpperBoundAnded25498 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBoundAnded25519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound25555 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound25565 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_117_in_ruleJvmLowerBound25602 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmLowerBound25623 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID25662 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValidID25673 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleValidID25712 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_131_in_ruleTagEntryDefExpParameterID25770 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_132_in_ruleTagEntryDefExpParameterID25787 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_133_in_ruleTagEntryDefExpParameterID25804 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_134_in_ruleTagEntryDefExpParameterID25821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_135_in_ruleTagEntryDefExpParameterID25838 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleTagEntryDefExpParameterID25855 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_136_in_ruleTagEntryDefExpParameterID25872 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_137_in_ruleTagEntryDefExpParameterID25889 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_138_in_ruleTagEntryDefExpParameterID25906 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_139_in_ruleLayoutExpParameterNameID25950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_139_in_ruleToolViewExpNameID25993 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_140_in_ruleElementFigureExpNameID26037 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_139_in_ruleElementFigureExpNameID26054 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_141_in_ruleDockParameterNameID26098 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_142_in_ruleAnchorNameID26141 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_143_in_ruleLocationNameID26184 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_144_in_ruleBoundParameterNameID26228 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_145_in_ruleBoundParameterNameID26245 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_146_in_ruleBoundParameterNameID26262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_147_in_ruleBoundParameterNameID26279 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_72_in_ruleLocatorParameterNameID26323 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_79_in_ruleLineStyle26367 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_148_in_ruleLineStyle26384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_149_in_ruleLineStyle26401 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_150_in_ruleLineStyle26418 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_151_in_ruleLineStyle26435 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_152_in_ruleLineStyle26452 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_75_in_ruleDockType26497 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_76_in_ruleDockType26514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_77_in_ruleDockType26531 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_78_in_ruleDockType26548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_153_in_ruleDockType26565 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_79_in_ruleDockType26582 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_154_in_ruleDecoratorLocation26627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_155_in_ruleDecoratorLocation26644 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_synpred1_InternalUnicornLanguageDefinition2101 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_synpred2_InternalUnicornLanguageDefinition2318 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_synpred8_InternalUnicornLanguageDefinition8421 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_synpred10_InternalUnicornLanguageDefinition9906 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_synpred10_InternalUnicornLanguageDefinition9915 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_synpred12_InternalUnicornLanguageDefinition10233 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_synpred12_InternalUnicornLanguageDefinition10242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpMultiAssign_in_synpred18_InternalUnicornLanguageDefinition15872 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpOr_in_synpred19_InternalUnicornLanguageDefinition16220 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpAnd_in_synpred20_InternalUnicornLanguageDefinition16479 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpEquality_in_synpred21_InternalUnicornLanguageDefinition16738 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_87_in_synpred22_InternalUnicornLanguageDefinition17014 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpCompare_in_synpred23_InternalUnicornLanguageDefinition17087 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpOther_in_synpred24_InternalUnicornLanguageDefinition17406 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpAdd_in_synpred25_InternalUnicornLanguageDefinition17686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpMulti_in_synpred26_InternalUnicornLanguageDefinition17966 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_101_in_synpred27_InternalUnicornLanguageDefinition18560 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_102_in_synpred28_InternalUnicornLanguageDefinition18714 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleValidID_in_synpred28_InternalUnicornLanguageDefinition18723 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleOpSingleAssign_in_synpred28_InternalUnicornLanguageDefinition18729 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_102_in_synpred29_InternalUnicornLanguageDefinition18832 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_103_in_synpred29_InternalUnicornLanguageDefinition18846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_104_in_synpred29_InternalUnicornLanguageDefinition18866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_synpred30_InternalUnicornLanguageDefinition19093 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalUnicornLanguageDefinition19145 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_37_in_synpred31_InternalUnicornLanguageDefinition19152 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalUnicornLanguageDefinition19159 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_105_in_synpred31_InternalUnicornLanguageDefinition19169 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_107_in_synpred33_InternalUnicornLanguageDefinition20614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmTypeReference_in_synpred34_InternalUnicornLanguageDefinition21980 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleValidID_in_synpred34_InternalUnicornLanguageDefinition21989 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_synpred35_InternalUnicornLanguageDefinition22438 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred36_InternalUnicornLanguageDefinition22490 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_37_in_synpred36_InternalUnicornLanguageDefinition22497 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred36_InternalUnicornLanguageDefinition22504 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_105_in_synpred36_InternalUnicornLanguageDefinition22514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred37_InternalUnicornLanguageDefinition23085 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_37_in_synpred37_InternalUnicornLanguageDefinition23092 = new BitSet(new long[]{0x0000000000080020L,0x0000000000000000L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred37_InternalUnicornLanguageDefinition23099 = new BitSet(new long[]{0x0000002000000000L,0x0000020000000000L});
    public static final BitSet FOLLOW_105_in_synpred37_InternalUnicornLanguageDefinition23109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleXExpression_in_synpred38_InternalUnicornLanguageDefinition23990 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_127_in_synpred39_InternalUnicornLanguageDefinition24135 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_126_in_synpred40_InternalUnicornLanguageDefinition24165 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_102_in_synpred42_InternalUnicornLanguageDefinition24512 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_91_in_synpred43_InternalUnicornLanguageDefinition24969 = new BitSet(new long[]{0x0000000000000002L});

}
